我很难决定是否使用ForeignKey或ManyToManyField。
假设我正在构建一个活动的应用程序,该活动要求获得访问活动的门票,并且代表可以根据他们所采用的门票类别获得一些优惠券。我可能会有以下课程:
class Coupon(models.Model):
name = models.CharField()
event = models.ForeignKey(Event)
created_by = models.ForeignKey(User)
expired_time = models.DateTimeField()
description = models.TextField()
created_at = models.DateTimeField()
class CouponTicketMap(models.Model):
coupon = models.ForeignKey(Coupon)
tickets = models.ManyToManyField(Ticket)
class CouponUserMap(models.Model):
coupon = models.ForeignKey(Coupon)
users = models.ManyToManyField(User)
组织者可以将优惠券映射到一张或多张门票。
或者他可以映射到一些选定的或随机的用户。
(我不需要中间表中的额外字段,这就是我在这里没有使用through
的原因。)
我可以将2nd
和3rd
模型重新设计为
class CouponTicketMap(models.Model):
coupon = models.ForeignKey(Coupon)
tickets = models.ForeignKey(Ticket)
class CouponUserMap(models.Model):
coupon = models.ForeignKey(Coupon)
users = models.ForeignKey(User)
我认为我可以从两种设计中实现我所需要的,但是想要了解这两种设计的后果。因此,在考虑性能,存储,传统风格等方面时,哪种设计会获得更多选票。任何人都可以做出决定。
由于
答案 0 :(得分:0)
我会说这个模型是因为你说的话:
class CouponTicketMap(models.Model):
coupon = models.ForeignKey(Coupon)
tickets = models.ForeignKey(Ticket)
class CouponUserMap(models.Model):
coupon = models.ForeignKey(Coupon)
users = models.ManyToManyField(User)
Cuz,一个偶像可以有很多门票,很多用户都可以拥有相同的优惠券。当你可以根据设计需要使用它们时,不要只看到一个参数。希望我的意见有所帮助。