gpt4 book ai didi

python - Django:CreateView 和 UpdateView 中具有唯一约束的不同行为

转载 作者:行者123 更新时间:2023-12-01 07:51:08 31 4
gpt4 key购买 nike

class Badge(Model):
# ....

class Meta:
unique_together = ('identifier', 'restaurant')
  • 使用 CreateView,创建标识符已存在的 Badge 对象时,我实际上收到了表单错误,这是预期的行为。

  • 但是,使用 UpdateView 时,在编辑标识符已存在的 Badge 对象时,我没有收到任何表单错误,但收到 500 错误重复的键值违反了唯一约束

我不明白为什么行为不同。我希望在这两种情况下都显示表单错误。

最佳答案

我刚刚意识到要使验证工作,所有字段都需要在基于类的 View 中指定,即使这些字段不应由用户填写。

class BadgesUpdateView(UpdateView):
model = Badge
# restaurant field must be included for validation even if the user does NOT fill it.
fields = ('identifier', 'is_active', 'owner', 'restaurant')

def get_form(self, form_class=None):
form = super().get_form(form_class)
form.fields['restaurant'].widget = forms.HiddenInput()
return form

关于python - Django:CreateView 和 UpdateView 中具有唯一约束的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56210939/

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