gpt4 book ai didi

Django,向提交的模型表单添加排除的属性

转载 作者:行者123 更新时间:2023-12-04 01:37:12 24 4
gpt4 key购买 nike

我有一个模型表单,我排除了两个字段,create_datecreated_by 字段。现在我在使用 save() 方法时收到“Not Null”错误,因为 created_by 是空的。

我尝试在 save() 方法之前将用户 ID 添加到表单中,如下所示: form.cleaned_data['created_by'] = 1form.cleaned_data['created_by_id'] = 1 。但这都不起作用。

有人可以向我解释如何向提交的模型表单“添加”其他内容以便保存?

class Location(models.Model):
name = models.CharField(max_length = 100)
created_by = models.ForeignKey(User)
create_date = models.DateTimeField(auto_now=True)

class LocationForm(forms.ModelForm):
class Meta:
model = Location
exclude = ('created_by', 'create_date', )

最佳答案

由于您在表单中排除了字段 created_bycreate_date,因此尝试通过 form.cleaned_data 分配它们没有任何意义。

您可以执行以下操作:

如果你有一个 View ,你可以简单地使用 form.save(commit=False) 然后设置 created_by 的值

def my_view(request):
if request.method == "POST":
form = LocationForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.created_by = request.user
obj.save()
...
...

`

如果您使用的是 Admin,您可以覆盖 save_model() 方法以获得所需的结果。
class LocationAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.created_by = request.user
obj.save()

关于Django,向提交的模型表单添加排除的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com