Django 中的分组复选框选择多个选项
在我的 Django 应用程序中,我有以下模型:
class SuperCategory(models.Model):
name = models.CharField(max_length=100,)
slug = models.SlugField(unique=True,)
class Category(models.Model):
name = models.CharField(max_length=100,)
slug = models.SlugField(unique=True,)
super_category = models.ForeignKey(SuperCategory)
我试图在 Django 的管理界面中完成的是使用小部件 CheckboxSelectMultiple 呈现 Category ,但 Category 以某种方式按 < 分组。强>超级类别,如下所示:
类别:
体育:<- 超级类别项目
[ ] 足球 <- 类别项目
[ ] 棒球 <- 类别项目
[ ] ...政治:<- 超级类别的另一项
[ ] 拉丁美洲
[ ] 北美
[ ] ...
有人对如何做到这一点有好的建议吗?
非常感谢。
In my Django App I have the following model:
class SuperCategory(models.Model):
name = models.CharField(max_length=100,)
slug = models.SlugField(unique=True,)
class Category(models.Model):
name = models.CharField(max_length=100,)
slug = models.SlugField(unique=True,)
super_category = models.ForeignKey(SuperCategory)
What I'm trying to accomplish in Django's Admin Interface is the rendering of Category using widget CheckboxSelectMultiple but with Category somehow grouped by SuperCategory, like this:
Category:
Sports: <- Item of SuperCategory
[ ] Soccer <- Item of Category
[ ] Baseball <- Item of Category
[ ] ...Politics: <- Another item of SuperCategory
[ ] Latin America
[ ] North america
[ ] ...
Does anybody have a nice suggestion on how to do this?
Many thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
经过一番挣扎,这就是我得到的。
首先,让 ModelAdmin 调用 ModelForm:
然后,在表单中,使用自定义小部件来渲染:
最后,小部件:
不是最优雅的解决方案,但是嘿,它有效。
After some struggle, here is what I got.
First, make ModelAdmin call a ModelForm:
Then, in the form, use use a custom widget to render:
Finally, the widget:
Not the most elegant solution, but hey, it worked.
我的情况略有不同,但我希望我能根据 OP 情况正确调整代码。那么下面的代码应该可以在 Django 4.2 中实现这个技巧:
然后我以如下形式使用它:
I had a slightly different case, but I hope I adapted the code properly to the OPs case. Then the following should do the trick in Django 4.2:
which I then use in a form like this: