我有以下模型字段:
category = models.ForeignKey("QuestionCategory", on_delete=models.CASCADE, null=False, Blank=False )
django 的正确行为是,以 html 形式呈现它,在选择列表上有所有选项(所有类别)以及“空选项”,由“-----------”表示?
不过,如果选择该空选项并尝试保存,则会出现验证错误,我需要从列表中选择一个元素...
以 html 形式呈现它是 django 的正确行为吗?
是的,它仍然会使用
---
,但在您提交表单时拒绝它。它也可能比仅仅选择一个值更好,因为这“暗示”用户他们可能更好地选择该值。这也意味着某些用户可能会过度循环该字段。
如果您仍然想自动选择第一项,您可以使用:
def default_category():
return QuestionCategory.objects.first()
class Question(models.Model):
category = models.ForeignKey(
'QuestionCategory',
on_delete=models.CASCADE,
null=False,
blank=False,
default=default_category,
)
但是让用户明确地选择一个值可能比希望第一项是类别更好。