我必须为一个需要显示不同类型内容的应用程序实现一个新闻源。在将来,可能会出现一些新的内容类型。在我的脑海中,我有一个高层次的想法。目前,我不关心排名、缓存等问题。我的重点是生成具有不同类型内容的新闻源。
class ContentType1(models.Model):
pass
class ContentType2(models.Model):
pass
class ContentType3(models.Model):
pass
class Content(models.Model):
c_type = models.CharField(
max_length=6,
choices=[
('TYPE1', 'Type 1 content'),
('TYPE2', 'Type 2 content'),
('TYPE3', 'Type 3 content')
]
)
type_1 = models.ForeignKey(ContentType1, null=True, blank=True)
type_2 = models.ForeignKey(ContentType2, null=True, blank=True)
type_3 = models.ForeignKey(ContentType3, null=True, blank=True)
其思想是建立一个通用的Content
模型,为每种类型的内容提供单独的字段,并有一个名为c_type
的字段确定内容的类型和访问相应字段的指南,并从内容查询集响应用户的请求。
我对这种方法并不完全满意,正在寻找一种更好的方法,可能是多态性的方法,或者使用Django的任何更好的方法。
1条答案
按热度按时间vh0rcniy1#
我认为您可以使用choices字段来选择内容类型。
例如: