django - 如何在 Wagtail 中使用 RadioSelect 在管理页面上创建 ManyToOne?

标签 django django-models wagtail wagtail-snippet

我想在管理中为我的博客类别设置一个单选选项。 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 选项,因此我可以使用单选而不是 CheckboxSelectMultiple。

如果有帮助,我们将不胜感激。谢谢!

最佳答案

多对一关系是一个 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),
    ]

关于django - 如何在 Wagtail 中使用 RadioSelect 在管理页面上创建 ManyToOne?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56056804/

相关文章:

python - Django 数据库路由器

python - 使用 StreamBlock 时如何解决 Wagtail 循环 block 依赖

django - “QuerySet”对象没有属性错误,尝试获取 ManyToMany 字段的相关数据

wagtail - 如何让 wagtail 的 TimeInput 接受秒?

html - 获取动态图像django/wagtail的图像源

django - 多对多关系的Django管理表单

python - 服务 'web' 无法构建,协议(protocol)错误

django - 如何在 Django 中创建抽象模型?

python - Django:电子商务的产品变体

django - 修改 Wagtail 发布下拉列表(每个应用程序)