python - 如何在 django 中实现一对多关系?
问题描述
所以我有一个案例,我必须在 django 中使用一对多关系,我不知道如何使用它。我想实现可能很多的一对多关系order(one)
to product(s)
。我的代码是这样的:
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)
解决方案
User
在您的情况下, and之间有 M:N 关系Product
,因为一个Product
可以是多个Order
s 的成员,并且Order
可以包含多个Products
。它被建模为两个 1:N 关系,如下图所示。
┌─────────┐
│ Product │
│ - name │◄──┐
│ - price │ │ ┌───────────────┐
└─────────┘ └────────┤ Order │
│- <FK> User │
┌─────────┐ ┌────────┤- <FK> Product │
│ User │ │ └───────────────┘
│ - name │◄──┘
└─────────┘
https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_one/
class Order(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE, blank=True, null=True)
...
推荐阅读
- php - 根据订购的产品动态覆盖 WooCommerce Stripe 键
- c++ - 在 std::tuple 上使用 std::variant 的问题
- sql - 为什么 null||null 在 postgres 中返回一个空值而 concat(null,null) 返回一个空字符串?
- ignite - 在 Apache Ignite 中合并两个持久缓存
- python-2.7 - 当我对语音识别说话时没有响应
- tensorflow - ImportError: import tensorflow_model_analysis as tfma [PYTHON on datalab]
- r - 在多个(唯一和二进制)列中拆分调查文本单元格
- javascript - 来自动态 JS 的图像源相对路径未正确加载
- amazon-ecs - AWS Fargate vs Batch vs ECS 每天一次的批处理过程
- android - Android Studio 无法识别 wav 文件