如何将登录(经过身份验证的)用户分配给他们提交的表单数据?

不接受

我正在使用Django开发员工反馈界面。他们应能够登录并提出投诉。该投诉应该与提交投诉的用户一起作为属性存储在数据库中。

我试图以某种方式将用户传递给表单,以便表单保存经过身份验证的用户的用户名,但是我无法将数据从视图传递给表单。我已经能够将ModelChoiceField()集成到ModelForm中,但这可以使经过身份验证的用户操纵将与投诉相关联的用户名。

models.py:

from django.db import models
from django.contrib.auth.models import User


class Complaint(models.Model):
    complaint_text = models.CharField(max_length=1000, default='')
    switch_schedule_yes_or_no = models.BooleanField(default=True)
    user = models.ForeignKey(User, default=1, on_delete=models.CASCADE)

views.py:

from .forms import ComplaintForm
from django.contrib.auth.decorators import login_required
from django.shortcuts import render


@login_required()
def complaint_view(request):
    form = ComplaintForm(request.POST)
    if form.is_valid():
        form.save()
        form = ComplaintForm()

    context = {
        'form': form,
    }
    return render(request, 'complaint.html', context)

forms.py:

from django import forms
from .models import Complaint
from django.contrib.auth.models import User


class ComplaintForm(forms.ModelForm):
    complaint_text = forms.CharField(max_length=1000)
    switch_schedule_yes_or_no = forms.BooleanField()
    user = forms.ModelChoiceField(queryset=User.objects.all())

    class Meta:
        model = Complaint
        fields = ['complaint_text', 'switch_schedule_yes_or_no', 'user']

如果可以通过某种方式进行设计,那么这是一种允许投诉与经过身份验证的用户相关联的方式,那就太了不起了!可以通过将参数从视图传递到表单中,也可以使用用户个人URL。我已经尝试解决这几天了。

干杯!

阿曼加尔格

您可以request.user用来访问经过身份验证的用户并与您的Complaint对象关联您不需要表格中user字段ComplaintForm

@login_required()
def complaint_view(request):
    form = ComplaintForm(request.POST)
    if form.is_valid():
        complaint = form.save(commit=False)  #don't commit to DB
        complaint.user = request.user  #access the user
        complaint.save()   # save and commit to DB
        form = ComplaintForm()

    context = {
        'form': form,
    }
    return render(request, 'complaint.html', context)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将我的特定位置分配给他们的邻居?

Django - 如何将当前经过身份验证的用户与表单提供的数据相关联

如何将我的登录 ID 分配给成员以显示他们已预订的课程?

如何将基本身份验证标头分配给XMLHTTPREQUEST?

如何将经过身份验证的用户名保存到数据库中

我如何只允许经过身份验证的用户(使用 cognito)访问他们自己的 S3 存储桶/密钥?

如何将登录的用户链接到他们的数据,如何在MySQL表中检索和更新他们

有没有办法让登录他们的 PC 的用户使用 LDAP 完成身份验证?

如何将硬编码用户 ID 更改为经过身份验证的用户?

如何将经过身份验证的用户绑定到控制器中的参数?

如何将经过身份验证的用户设置为序列化程序?

如何将当前经过身份验证的用户设置为实体中的参考

如何将新创建的用户重定向到他们的“已登录”主页?

Spring Security:允许所有经过完全身份验证的用户使用页面视图,除非他们具有特定角色

如何将Azure用户托管身份的Terraform分配给存储帐户?

他们在这段代码中做了什么(将 $({}) 分配给对象属性)?

为什么他们的顺序是将新变量分配给现有变量

地址如何分配给指针变量?他们遵循任何模式吗?

如何将每个用户路由/链接到他们自己的数据?

如何将未经身份验证的Blazor Azure AD用户重定向到与经过身份验证的用户不同的页面?

Xamarin表单:如何将列表分配给ListView

如何将熊猫数据框分配给其他数据框的切片

如何将数据分配给表单上的变量?[Ruby on rails]

如何将未经身份验证的用户重定向到登录视图

如何将已通过身份验证的用户从登录页面重定向到主页

如何将IAM角色分配给用户或组

如何将多个用户分配给Jira任务

如何将客户分配给 Django 中的用户?

Laravel:如何将组织分配给用户