我很困惑,以決定是否使用ForeignKey或ManyToManyField。django模型設計 - ManyToMany或ForeignKey
假設我正在爲要求門票訪問事件的事件構建應用程序,並且代表可能會根據他們所購買的門票類別獲得一些優惠券。我可能有以下類別:
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)
我認爲我可以從兩個設計中實現我所需要的,但是想要了解這兩種設計的後果。那麼當考慮性能,存儲,傳統風格等方面時,哪種設計會獲得更多的選票。任何人都可以在做出決定時點亮一些。
感謝
您的兩個選項在功能上並不相同,所以後果無關緊要,因爲其中一個選項不起作用。請記住,外鍵_只能保存一個值_而多對多具有_幾個值_ – Anentropic
我知道。我的意思是說,我有這兩種選擇,並且說明了我正在使用的這種情況。我想知道哪一個更適合我的情況。 – ManikandanV
您目前沒有兩個選項:您有一個選項和其他沒有意義的選項 – Anentropic