我有一个Django数据库存储'剧集'和'评论'。每集都有标题,日期和一组评论。每个评论都有一个标题,一个分数,并且必须属于一集。我还希望审核从其所属的剧集继承DateField。
我知道没有'需要'为此,每个评论的日期可以通过ForeignKey
与其所属的剧集交叉引用来找到。我只是问这可以做到以及怎么做?
我的示例models.py
代码:
class Episode(models.Model):
title = models.CharField(max_length=100)
date = models.DateField()
class Review(models.Model):
title = models.CharField(max_length=100)
score = models.FloatField()
episode = models.ForeignKey(Episode)
因此,我希望在名为Review
的{{1}}中添加一个属性,该属性在创建时都会从date
继承日期。
答案 0 :(得分:0)
你有一个关于回顾的外国关键指向Episode吗?如果没有,你应该添加它。
然后,您可以简单地遍历该关系,以便在您进行审核时从“情节”中获取日期。无需在Review上添加日期字段。
答案 1 :(得分:0)
您可以使用class Meta: abstract = True
class DateModel(models.Model):
date = models.DateField()
# you could in fact include the title field here as well
# since they have that in common too.
class Meta:
abstract = True
class Episode(DateModel):
title = models.CharField(max_length=100)
class Review(DateModel):
title = models.CharField(max_length=100)
score = models.FloatField()
episode = models.ForeignKey(Episode)
Episode和Review将从DateModel继承日期字段,这比向两个模型本身添加日期字段更简洁。我假设您希望保持这两个字段同步?因此,每当您更新Episode
时,您还需要更新Review
,反之亦然。所以更好的选择是保持标准化模型,就像你从一开始就拥有的那样。
您提到要在创建Episode时添加此属性。 Signals可以为您做到这一点。