"user" 在将 data-dict 解析为 Django 表单时未设置,但所有其他字段都是
"user" is not set when parsing a data-dict to a Django form, but all other fields are
假设我有以下内容
#models.py
class MyModel(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE,null=True)
link = models.URLField(max_length=2048)
date_added = models.DateTimeField(default = timezone.now)
used = models.BooleanField(default = True)
和我的表格
class MyModelForm(forms.ModelForm):
class Meta:
model = Wishlist
exclude = [
"user","date_added"
]
如果我尝试创建一个实例(请注意,为清楚起见,我省略了 if request.method="POST"
等)
def myView(request):
user = request.user
instance = MyModel(user=user)
data = {"link":link,"date_added":domain,"user":user}
form = MyModelForm(data=data)
form.save()
link
和 date_added
已写入数据库,但 user
字段为空。
如果我在创建表单后将 user
设置为实例,如
def myView(request):
user = request.user
instance = MyModel(user=user)
data = {"link":link,"date_added":domain}
form = MyModelForm(data=data)
form.save(commit=False)
form.instance.user = user #Setting the user here
form.save()
它就像一个魅力。
为什么我无法在data-dict中设置user
,有什么办法吗?
How come, I cannot set the user in the data-dict.
表单将忽略所有不需要处理的字段。这使得网络服务器更安全:这里我们确保用户不能为另一个用户创建MyModel
。
如果某个字段因此属于 excluded
属性,或者不属于 Meta
class 的 fields
属性,则表单将 不设置对应的模型对象属性
您没有在表格中指定 instance
:
def myView(request):
user = request.user
instance = MyModel(user=user)
data = {"link":link,"date_added":domain}
form = MyModelForm(data=data<b>, instance=instance</b>)
form.save()
假设我有以下内容
#models.py
class MyModel(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete = models.CASCADE,null=True)
link = models.URLField(max_length=2048)
date_added = models.DateTimeField(default = timezone.now)
used = models.BooleanField(default = True)
和我的表格
class MyModelForm(forms.ModelForm):
class Meta:
model = Wishlist
exclude = [
"user","date_added"
]
如果我尝试创建一个实例(请注意,为清楚起见,我省略了 if request.method="POST"
等)
def myView(request):
user = request.user
instance = MyModel(user=user)
data = {"link":link,"date_added":domain,"user":user}
form = MyModelForm(data=data)
form.save()
link
和 date_added
已写入数据库,但 user
字段为空。
如果我在创建表单后将 user
设置为实例,如
def myView(request):
user = request.user
instance = MyModel(user=user)
data = {"link":link,"date_added":domain}
form = MyModelForm(data=data)
form.save(commit=False)
form.instance.user = user #Setting the user here
form.save()
它就像一个魅力。
为什么我无法在data-dict中设置user
,有什么办法吗?
How come, I cannot set the user in the data-dict.
表单将忽略所有不需要处理的字段。这使得网络服务器更安全:这里我们确保用户不能为另一个用户创建MyModel
。
如果某个字段因此属于 excluded
属性,或者不属于 Meta
class 的 fields
属性,则表单将 不设置对应的模型对象属性
您没有在表格中指定 instance
:
def myView(request):
user = request.user
instance = MyModel(user=user)
data = {"link":link,"date_added":domain}
form = MyModelForm(data=data<b>, instance=instance</b>)
form.save()