簡體   English   中英

Django 2將多個用戶引用到一個模型中

[英]Django 2 Reference multiple users into one Model

我正在使用Python(3.7)和Django(2)開發一個項目,其中有多個使用User模型的模型。 我有一個演出模型,一個用戶可以創建一個演出,另一個用戶可以購買該演出,因此我想構建一個模型來存儲購買信息,我要在其中包含演出Gig Model和創建該userGig作為selleruser誰是購買者的演出作為buyer在模型中。 如何創建這樣的模型?

這是我的Gig模型:

class Gig(models.Model):
    CATEGORY_CHOICES = (
        ('GD', 'Graphic & Design'),
        ('DM', 'Digital Marketing'),
        ('WT', 'Writing & Translation'),
        ('VA', 'Video & Animation'),
        ('MA', 'Music & Audio'),
        ('PT', 'Programming & Tech'),
        ('FL', 'Fun & Lifestyle'),
    )

    title = models.CharField(max_length=500)
    category = models.CharField(max_length=255, choices=CATEGORY_CHOICES)
    description = models.CharField(max_length=1000)
    price = models.IntegerField(blank=False)
    photo = models.FileField(upload_to='gigs')
    status = models.BooleanField(default=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

在這里,我想要實現以下目標:

class Order(models.Model):
    gig = models.ForeignKey(Gig, on_delete=models.CASCADE)
    seller = "I want to add the gig creator here"
    buyer = "I want to add thee gig buyer here"

為什么不這樣使用ForeignKey

class Order(models.Model):
    gig = models.ForeignKey(Gig, on_delete=models.CASCADE)
    seller = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name="selling")
    buyer = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name="buying")

對於每個FK到用戶模型,請確保具有不同的related_names ,否則它們將發生沖突。

您可以簡單地執行以下操作:

class Order(models.Model):
    gig = models.ForeignKey(Gig, on_delete=models.CASCADE)
    seller = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sold_orders')
    buyer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='bought_orders')

PS請注意,為了避免可能的循環導入問題,最好在ForeightKey字段上使用字符串模型表示形式。 喜歡:

gig = models.ForeignKey('Gig', on_delete=models.CASCADE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM