Django 模型定义多对多字段
Django models deifinition many to many field
我有以下情况:
class Product(models.Model):
name = models.CharField(max_length=200)
class Order(models.Model):
product = models.ManyToManyField(Product)
quantity = models.IntegerField(default=0,validators=[MinValueValidator(1)])
并在 admin.py
class ProductsInline(admin.TabularInline):
model = Order.product.through
class OrderAdmin(admin.ModelAdmin):
inlines = [ProductsInline,]
filter_horizontal = ('product',)
我想在创建一个订单时为每个产品输入不同的数量,但是对于这个模型这是不可能的。每个订单只能插入一个数量。
我想创建一个包含产品及其数量的中间 class ProductQuantity,然后将其添加到订单中,但我不知道是否可以创建 ProductQuantity "on the fly" 创建订单时。
我想不出任何解决办法,有人可以帮忙吗?
我不确定我是否收到你的问题。这会解决您的问题吗?
class Product(models.Model):
name = models.CharField(max_length=200)
class Order(models.Model):
customer = models.ForeignKey(Customer)
class OrderItem(models.Model):
order = models.ForeignKey(Order)
product = models.ManyToManyField(ProductQuantity)
quantity = models.IntegerField(default=0,validators=[MinValueValidator(1)])
编辑:
使用上述模型,您可以创建以下订单:
Products:
+----+--------+
| id | name |
+----+--------+
| 1 | apple |
| 2 | orange |
| 3 | banana |
+----+--------+
Order:
+----+-------------+
| id | customer_id |
+----+-------------+
| 1 | 112 |
| 2 | 99 |
+----+-------------+
OrderItem:
+----+-------+---------+----------+
| id | order | product | quantity |
+----+-------+---------+----------+
| 1 | 1 | 1 | 10 |
| 2 | 1 | 2 | 20 |
| 3 | 1 | 3 | 30 |
| 4 | 2 | 1 | 5 |
+----+-------+---------+----------+
有两个不同客户的两个订单,一个有 10 个苹果、20 个橙子和 30 个香蕉。第二个订单只有一个 5 个苹果。
我有以下情况:
class Product(models.Model):
name = models.CharField(max_length=200)
class Order(models.Model):
product = models.ManyToManyField(Product)
quantity = models.IntegerField(default=0,validators=[MinValueValidator(1)])
并在 admin.py
class ProductsInline(admin.TabularInline):
model = Order.product.through
class OrderAdmin(admin.ModelAdmin):
inlines = [ProductsInline,]
filter_horizontal = ('product',)
我想在创建一个订单时为每个产品输入不同的数量,但是对于这个模型这是不可能的。每个订单只能插入一个数量。
我想创建一个包含产品及其数量的中间 class ProductQuantity,然后将其添加到订单中,但我不知道是否可以创建 ProductQuantity "on the fly" 创建订单时。
我想不出任何解决办法,有人可以帮忙吗?
我不确定我是否收到你的问题。这会解决您的问题吗?
class Product(models.Model):
name = models.CharField(max_length=200)
class Order(models.Model):
customer = models.ForeignKey(Customer)
class OrderItem(models.Model):
order = models.ForeignKey(Order)
product = models.ManyToManyField(ProductQuantity)
quantity = models.IntegerField(default=0,validators=[MinValueValidator(1)])
编辑:
使用上述模型,您可以创建以下订单:
Products:
+----+--------+
| id | name |
+----+--------+
| 1 | apple |
| 2 | orange |
| 3 | banana |
+----+--------+
Order:
+----+-------------+
| id | customer_id |
+----+-------------+
| 1 | 112 |
| 2 | 99 |
+----+-------------+
OrderItem:
+----+-------+---------+----------+
| id | order | product | quantity |
+----+-------+---------+----------+
| 1 | 1 | 1 | 10 |
| 2 | 1 | 2 | 20 |
| 3 | 1 | 3 | 30 |
| 4 | 2 | 1 | 5 |
+----+-------+---------+----------+
有两个不同客户的两个订单,一个有 10 个苹果、20 个橙子和 30 个香蕉。第二个订单只有一个 5 个苹果。