Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中实现一对多关系?_Python_Django - Fatal编程技术网

Python 如何在django中实现一对多关系?

Python 如何在django中实现一对多关系?,python,django,Python,Django,所以我有一个案例,我必须在django中使用一对多关系,我不知道如何使用它。我想在订单(一)和产品(多个)中实现一对多关系,这可能是多个。我的代码如下: class Product(models.Model): name = models.CharField(max_length=200) price = models.IntegerField() image = models.ImageField() category = models.ForeignKey(C

所以我有一个案例,我必须在django中使用一对多关系,我不知道如何使用它。我想在订单(一)
和产品(多个)
中实现一对多关系,这可能是多个。我的代码如下:

class Product(models.Model):
    name = models.CharField(max_length=200)
    price = models.IntegerField()
    image = models.ImageField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True, null=True)
    created_at = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.name

class Order(models.Model):
    order_id = models.CharField(max_length=20)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

在您的例子中,
用户
产品
之间存在M:N关系,因为一个
产品
可以是多个
订单
的成员,而
订单
可以包含多个
产品
。它被建模为两个1:N关系,如下所示

    ┌─────────┐
    │ Product │
    │ - name  │◄──┐
    │ - price │   │        ┌───────────────┐
    └─────────┘   └────────┤ Order         │
                           │- <FK> User    │
    ┌─────────┐   ┌────────┤- <FK> Product │
    │ User    │   │        └───────────────┘
    │ - name  │◄──┘
    └─────────┘

查看有关关系的文档,您所说的显然是订单和产品之间的多对多关系,而不是一对多关系。否则,一个产品只能以一个订单出现,而这可能不是您想要的。在代码中如何使用该选项添加多个产品?也谢谢你的回答
class Order(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, blank=True, null=True)
    ...