Django 模型外键 null=false,但表单上的选择列表上为空值

问题描述 投票:0回答:1

我有以下模型字段:

category = models.ForeignKey("QuestionCategory", on_delete=models.CASCADE, null=False, Blank=False )

django 的正确行为是,以 html 形式呈现它,在选择列表上有所有选项(所有类别)以及“空选项”,由“-----------”表示?

(如此处图片所示): enter image description here

不过,如果选择该空选项并尝试保存,则会出现验证错误,我需要从列表中选择一个元素...

django
1个回答
0
投票

以 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,
    )

但是让用户明确地选择一个值可能比希望第一项是类别更好。

© www.soinside.com 2019 - 2024. All rights reserved.