我不确定如何使用常规 Django 表单将登录用户绑定到提交的表单。我看到很多使用ModelForms的例子,但没有一个(我可以说)不使用ModelForms。在我的 forms.py 我很难弄清楚如何添加作者字段。我不能只添加作者=表格。外键或类似的东西。然后在我看来,我需要调用作者字段以保存到数据库中(我下面的示例是我的最佳猜测,可能与"tenant_form.author = request.user"不正确)。
我有一个看起来像这样的模型,并有一个用户外键设置:
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