假设我有一个看起来像这样的表单:
forms.py
class CreateASomethingForm(ModelForm):
class Meta:
model = Something
fields = ['field2', 'field3', 'field4']
Run Code Online (Sandbox Code Playgroud)
我希望表单有这三个字段.不过我Something班上也有field1.我的问题是 - field1如果我没有使用ModelForm收集数据,我该如何添加数据.我尝试过这样的事情,但它不起作用,我不确定正确的方法来解决这个问题:
views.py
def create_something_view(request):
if (request.method == 'POST'):
# Create an object of the form based on POST data
obj = CreateASomething(request.POST)
# ** Add data into the blank field1 ** (Throwing an error)
obj['field1'] = request.user
# ... validate, save, then redirect
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
TypeError: 'CreateAClassForm' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
在Django中,ModelForm在保存之前将数据分配给对象的正确方法是什么?
关于request.user在Django中引用了什么,我感到很困惑?它是指auth_user表中的用户名字段还是引用用户模型实例?
我有这个疑问,因为我没能利用来访问模板电子邮件字段{{request.user.username}}或{{user.username}}
所以我在视图文件中做了以下操作
userr = User.objects.get(username=request.user)
Run Code Online (Sandbox Code Playgroud)
并将'userr'传递给模板并访问电子邮件字段为 {{request.user.username}}
虽然它的工作,但我想对它有一些清晰.
谢谢 :)