我有以下模型:
class Merchant(Model):
name = CharField()
class OrderItem(Model):
merchant = ForeignKey(Merchant)
freight_item = ForeignKey(FreightItem)
class FreightItem(Model):
amount = DecimalField()假设这是一条业务规则,所有指向货运项目的订单项目都属于同一商家,换句话说,一个商家将只生成一个货运项目。
在我现有的FreightItem类中,为了获取商家,我使用一个属性返回第一个订单商品来访问商家,如下所示:
class FreightItem(Model):
amount = DecimalField()
@property
def merchant(self):
return self.orderitems_set.first().merchant当我读到这段代码的时候,我的脑海中就会有一些东西告诉我这是不对的。但另一种选择是将商家字段添加到FreightItem模型中:
class FreightItem(Model):
merchant = ForeignKey(Merchant)
amount = DecimalField()但这在表中似乎是多余的(非规范化的)。
你们更喜欢哪种方式?
发布于 2015-10-29 13:14:12
如果您有一个从未包含在.first()中的FreightItem,则OrderItem调用将失败(不会返回任何内容)。
为什么不这样做呢:
class OrderItem(Model):
freight_item = ForeignKey(FreightItem)
@property
def merchant(self):
return self.freight_item.merchant
class FreightItem(Model):
amount = DecimalField()
merchant = ForeignKey(Merchant)https://stackoverflow.com/questions/33405087
复制相似问题