纯Django表格绑定用户提交表格和视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了纯Django表格绑定用户提交表格和视图相关的知识,希望对你有一定的参考价值。

我不确定如何使用常规Django表单将登录用户绑定到提交的表单。我看到很多使用ModelForms的例子,但没有(我可以告诉)没有使用ModelForms。在我的forms.py我很难搞清楚如何添加作者字段。我不能只添加author = forms.ForeignKey或类似的东西。然后以某种方式在我看来我需要调用作者字段保存到数据库中(我的下面的例子是我最好的猜测,可能不适合“tenant_form.author = request.user”)。

我有一个看起来像这样的模型,并有一个用户Foreignkey设置:

class AppyModel(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    date_time_form_filled = models.DateTimeField(auto_now_add=True)
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=20)

我有一个forms.py:

class TenantForm(forms.Form):
    first_name = forms.CharField(required=False, label='First Name')
    last_name = forms.CharField(required=False, label='Last Name')

我有一个views.py

@login_required
def tenant_create_form_view(request):
    tenant_form = TenantForm()  
    if request.method == 'POST':
        tenant_form.author = request.user
        tenant_form = TenantForm(request.POST)
        if tenant_form.is_valid():
            print(tenant_form.cleaned_data)
            AppyModel.objects.create(**tenant_form.cleaned_data)

        else:
            print(tenant_form.errors)
    context = {
        'form': tenant_form
    }

    return render(request, 'fill_appy.html', context)
答案

您应该在表单有效时添加作者,

tenant_form = TenantForm()  
if request.method == 'POST':
    tenant_form = TenantForm(request.POST)
    if tenant_form.is_valid():
        obj = tenant_form.save(commit=False)
        obj.author = request.user #add author here
        obj.save()
        # .. rest of code

以上是关于纯Django表格绑定用户提交表格和视图的主要内容,如果未能解决你的问题,请参考以下文章

表格集算表高性能原理——怎样实现纯前端百万行数据秒级响应

表格集算表高性能原理——怎样实现纯前端百万行数据秒级响应

当客户端仅提交一次表单时,Django 多次执行视图功能

如何在ios的表格视图中绑定数组数据?

如何在Django中只在ModelForms表中正确提交一个表单?

如何在一个提交中保存父母、孩子和孙子表格 - django