【问题标题】:How to make a ManyToOne in Wagtail with RadioSelect on admin page?如何在管理页面上使用 RadioSelect 在 Wagtail 中创建 ManyToOne?
【发布时间】:2019-05-09 09:53:16
【问题描述】:

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

我希望类别与文章是多对一关系。现在我有一个 ParentalManyToMany 字段,并为博客类别注册了 sn-p。

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。

我们将不胜感激。谢谢!

【问题讨论】:

    标签: django django-models wagtail wagtail-snippet


    【解决方案1】:

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

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

    【讨论】:

    • 还有一个问题:是否可以从管理员中删除'--------'默认值?
    • 我认为删除 blank=True 应该这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-03
    相关资源
    最近更新 更多