gpt4 book ai didi

Django 表单字段验证 - 如何判断操作是插入还是更新?

转载 作者:行者123 更新时间:2023-12-02 03:18:39 26 4
gpt4 key购买 nike

我正在尝试在 Django 中执行此操作:在管理中保存对象时,我想根据第一个对象中的一个字段保存另一个不同类型的对象。为了做到这一点,我必须检查第二个对象是否已经存在,如果存在,则仅针对第一个对象中的特定字段返回验证错误。我的问题是,我希望仅在插入操作时验证错误才出现在字段中。

如何根据操作是更新还是插入来显示特定管理表单字段的验证错误?

附注我知道对于模型验证来说这是不可能的,因为验证器只接受值参数,但我认为对于表单验证来说应该是可能的。

最佳答案

这可以通过在 Django 管理表单中编写 clean_[name_of_field] 方法来完成。可以通过测试self.instance.pk来检查插入或更新操作。

class EntityAdminForm(forms.ModelForm):
def clean_field(self):
field = self.cleaned_data['field']
insert = self.instance.pk == None
if insert:
raise forms.ValidationError('Some error message!')
else:
pass
return field

class EntityAdmin(admin.ModelAdmin):
form = EntityAdminForm

在 Django 管理中注册实体模型时,您必须使用 EntityAdmin 类:

admin.site.register(Entity, EntityAdmin)

关于Django 表单字段验证 - 如何判断操作是插入还是更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12707812/

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