我想将事件存储在我正在闲逛的 Web 应用程序中,并且我非常不确定每种方法的优缺点 - 广泛使用继承或以更温和的方式使用继承。
Example:
class Event(models.Model):
moment = models.DateTimeField()
class UserEvent(Event):
user = models.ForeignKey(User)
class Meta:
abstract = True
class UserRegistrationEvent(UserEvent):
pass # Nothing to add really, the name of the class indicates it's type
class UserCancellationEvent(UserEvent):
reason = models.CharField()
感觉就像我正在疯狂地创建数据库表。它需要大量的连接来选择内容,并且可能会使查询复杂化。但我觉得它的设计感觉很好。
使用具有更多字段的“更扁平”模型会更合理吗?
class Event(models.Model):
moment = models.DateTimeField()
user = models.ForeignKey(User, blank=True, null=True)
type = models.CharField() # 'Registration', 'Cancellation' ...
reason = models.CharField(blank=True, null=True)
谢谢大家对此的评论。
Philip
扁平化优于嵌套化。在这种情况下,我不认为“深层继承”真的会给你带来任何好处:我会选择更扁平的模型,因为它是一种更简单、更朴素的设计,可能具有更好的性能特征和易于访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)