1

我想在管理员中为我的博客类别设置一个单选选项。ManyToMany 字段不适用于 RadioSelect 小部件。

我希望该类别与文章是多对一关系。现在我有一个 ParentalManyToMany 字段,我注册了博客类别的片段。

class BlogPage(Page):
    ...
    category = ParentalManyToManyField('blog.ArticleCategory', blank=True)
    ...


@register_snippet
class ArticleCategory(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=80)

    panels = [
        FieldPanel('name'),
        FieldPanel('slug'),
    ]

    def __str__(self):
        return self.name

我不知道如何将其更改为 ManyToOne 选项,因此我可以使用 radioselect 而不是 CheckboxSelectMultiple。

帮助将不胜感激。谢谢!

4

1 回答 1

2

多对一关系是一个ForeignKey字段。默认情况下,这些将使用选择下拉菜单作为表单字段,但您可以通过在 上传递widget参数来覆盖它FieldPanel

from django import forms

class BlogPage(Page):
    ...
    category = models.ForeignKey('blog.ArticleCategory', null=True, blank=True, on_delete=models.SET_NULL)

    content_panels = [
       ...
       FieldPanel('category', widget=forms.RadioSelect),
    ]
于 2019-05-09T10:15:03.947 回答