0

我正在尝试将 TreeBeard 的内置表单与 django 表单(不是管理员)一起使用。我特别想用 TreeBeard 表单格式替换 Select ForeignKey 字段的呈现。我以为我可以通过在我的 ModelForm 中声明该字段来做到这一点,但我没有成功。我是 django 的新手,所以我的理解有限。

这些是我在 forms.py 中的初始类

MyCategories = movenodeform_factory(Category)

class CreatePost(ModelForm):

    class Meta:
        model = Post
        fields = ['title', 'category', 'region', 'content', ]

我尝试通过在开始时声明类别字段来实现它,但这显然不是这样做的方法。该声明确实返回了一个 html 格式的类别列表,但我不能用它替换 Post 类别(它是一个 ForeignKey)。

class CreatePost(ModelForm):
category = movenodeform_factory(Category)

class Meta:
    model = Post
    fields = ['title', 'category', 'region', 'content', ]

我想使用 TreeBeard 表单的原因是它根据类别层次结构嵌套字段的方式。

已解决:这最终比我意识到的要简单得多。

class CreatePost(ModelForm):
CHOICES = MoveNodeForm.mk_dropdown_tree(Category)
category = ChoiceField(choices=CHOICES)

class Meta:
    model = Post
    fields = ['title', 'category', 'region', 'content', ]
4

1 回答 1

2

解决方案就在我面前。我只需要使用 mk_dropdown_tree 创建一个列表并在 ChoiceField 中使用它。我希望有一天这对某人有所帮助。

class CreatePost(ModelForm):
    CHOICES = MoveNodeForm.mk_dropdown_tree(Category)
    category = ChoiceField(choices=CHOICES)

    class Meta:
        model = Post
        fields = ['title', 'category', 'region', 'content', ]
于 2018-08-31T01:08:48.193 回答