Django 是否始终需要ModelChoiceField?

Django 是否始终需要ModelChoiceField?,django,forms,models,Django,Forms,Models,我有一个模型 class Article(models.Model): . . language = models.ForeignKey(Language, help_text="Select the article's language") parent_article = models.ForeignKey('self', null=True, blank=True) 如果文章是原创文章,则“父文章=无”。如果一篇文章是翻译,那么“父文章”没有 所以我创造了

我有一个模型

class Article(models.Model):
    .
    .
    language = models.ForeignKey(Language, help_text="Select the article's language")
    parent_article = models.ForeignKey('self', null=True, blank=True)
如果文章是原创文章,则“父文章=无”。如果一篇文章是翻译,那么“父文章”没有

所以我创造了:

class ArticleAdminForm(forms.ModelForm):
    .
    .
    parent_article = forms.ModelChoiceField(queryset=AyurvedicArticle.objects.filter(parent_article=None), help_text="Select the parent article (if any)")

    class Meta:
        Article

class ArticleAdmin(admin.ModelAdmin):
    form = ArticleAdminForm
    .
    .
现在,当我应用所有这些时,它似乎工作得很好,但是当我没有选择“父文章”时,我在Admin中收到一条错误消息,说明“此字段是必需的”,即使模型说:“null=True,Blank=True”

当我不使用自定义表单时,例如,发酵语句

class ArticleAdmin(admin.ModelAdmin):
#    form = ArticleAdminForm
    .
    .
然后一切都正常了,除了现在我有很多选择。在“ModelChoicesField”的文档中,您可以阅读一个短语“注意,如果需要ModelChoiceField…”,这意味着不需要ModelChoiceField


知道如何处理吗?

如果要覆盖表单,需要在
ArticleAdminForm
中将字段设置为非必需字段

class ArticleAdminForm(forms.ModelForm):
    .
    .
    parent_article = forms.ModelChoiceField(
        queryset=AyurvedicArticle.objects.filter(parent_article=None),
        required=False,
        help_text="Select the parent article (if any)"
    )

    class Meta:
        Article

值得强调的一点是:如果你覆盖了一个字段,你就覆盖了它的所有属性,包括它是否是必需的。非常感谢你的解释。实际上,我知道它与'required=False'有关,但我的语法错了。