首页 > 解决方案 > Django 模型:多对多或一对多

问题描述

我试图弄清楚如何适当地创建 Order 和 Ticket 模型之间的关系。用户可以购买多张门票,并且会收到一个门票 ID——但是当用户支付门票数量(或门票 ID)时——我希望它显示带有门票 ID# 的订单 ID#。但是,我不确定如何创建 Ticket 和 Order 模型之间的关系。我什至需要 Order 才能加入 Ticket 模型吗?你有什么建议?我尝试使用 Order as many-to-many 与票的关系,但它似乎没有用。建议会有所帮助。

模型.py

class User(models.Model):
    first_name=models.CharField(max_length=100)
    last_name=models.CharField(max_length=100)
    email=models.CharField(max_length=100)
    password=models.CharField(max_length=100)
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at=models.DateTimeField(auto_now=True)

class Ticket(models.Model):
    venue=models.CharField(max_length=100)
    quantity=models.PositiveIntegerField()
    price=models.DecimalField(default=25.00, max_digits=5, decimal_places=2, null=True, blank=True)
    loop=models.CharField(max_length=100)
    purchaser = models.ForeignKey(User, related_name="purchases", on_delete=models.PROTECT)
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at=models.DateTimeField(auto_now=True)

class Order(models.Model):
    full_name=models.CharField(max_length=100)
    cc_number=models.PositiveIntegerField()
    exp_date=models.PositiveIntegerField()
    cvc=models.PositiveIntegerField()
    buyers=models.ManyToManyField(Ticket, related_name="bought_tickets")-----THIS HAS BEEN DELETED
    created_at=models.DateTimeField(auto_now_add=True)
    updated_at=models.DateTimeField(auto_now=True)
    ```

标签: djangomodelmany-to-many

解决方案


为了方便,我建议使用带有用户的 ForeignKey 以及带有 Ticket 的 ForeignKey。一位用户可能有多个工单和多个订单。一个订单可能有多个票。


推荐阅读