1 回答

TA贡献1865条经验 获得超7个赞
如果所有三个模型都具有相同的属性,表示相同的对象,但它只改变了对象的“类别”,那么为什么不只创建一个具有您选择类型的类别的模型呢?如果将来有必要,您将能够扩展到许多其他类别:
class Item(models.Model):
# add the choices:
WOMEN = "W"
MEN = 'M'
KIDS = "K"
SIGNED = "SI"
TYPE = (
(WOMEN, 'Women'),
(MEN, 'Men'),
(KIDS, 'Kids'),
)
photo = models.ImageField(upload_to='media')
title = models.CharField(max_length=20)
description = models.CharField(max_length=150)
price = models.IntegerField()
objects = models.manager
type = models.CharField(max_length=1, choices=TYPE, default=WOMEN, )
def __str__(self):
return self.title
使用此代码,您将能够对所有项目进行排序,type以获取每个模型:
women_items = Item.objects.filter(type="W") # women items
men_items = Item.objects.filter(type="M") # women items
kids_items = Item.objects.filter(type="K") # women items
您还需要知道,当您type在模板上打印属性时{{item.type}},您将在列表中看到文本TYPE。
这将使您更容易获得所需的东西,因此您只需要参考ItemM2M 关系上的模型。
我与购物车关系不大,但这可能是您要找的:
class CartItem(models.Model):
item = models.ManyToManyField(Item)
amount = models.PositiveIntegerField(default=1)
class Cart(models.Model):
cart_item = models.ManyToManyField(CartItem)
添加回答
举报