【发布时间】:2011-08-07 16:34:42
【问题描述】:
我在 Django 中很少有类似的模型:
class Material(models.Model):
title = models.CharField(max_length=255)
class Meta:
abstract = True
class News(Material):
state = models.PositiveSmallIntegerField(choices=NEWS_STATE_CHOICES)
class Article(Material):
genre = models.ForeignKey(Genre, verbose_name='genre')
以及模型Topic,与News和Article相关的ManyToMany。
我想使用像 case 这样的通用多对多关系。但问题是如何在 django admin 中使用默认的 ManyToMany 小部件。或者其他方便的类比。
UPD:如果我不使用泛型,我会写
class News(Material):
topic = models.ManyToMany(Topic)
class Article(Material):
topic = models.ManyToMany(Topic)
我会得到 2 个相同的表来表达这些关系。我想知道是否可以使用泛型来获得一个中间表,因为在我的数据库中不仅新闻和文章可能有主题。新闻和文章也可能与 2 个或更多主题相关。
【问题讨论】:
-
不确定您链接到的问题是如何相关的。您是否想从与 Topic 的 ManyToMany 关系切换到为 Topic 提供 GenericForeignKey 以便您可以将其“附加”到任何对象?您希望在哪个方向拥有多选列表小部件?新闻选择其主题?如果它是通用关系,则主题的选择列表必须显示所有内容..
标签: django generics django-admin many-to-many