1 回答
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果所有三個(gè)模型都具有相同的屬性,表示相同的對(duì)象,但它只改變了對(duì)象的“類別”,那么為什么不只創(chuàng)建一個(gè)具有您選擇類型的類別的模型呢?如果將來(lái)有必要,您將能夠擴(kuò)展到許多其他類別:
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
使用此代碼,您將能夠?qū)λ许?xiàng)目進(jìn)行排序,type以獲取每個(gè)模型:
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
您還需要知道,當(dāng)您type在模板上打印屬性時(shí){{item.type}},您將在列表中看到文本TYPE。
這將使您更容易獲得所需的東西,因此您只需要參考ItemM2M 關(guān)系上的模型。
我與購(gòu)物車關(guān)系不大,但這可能是您要找的:
class CartItem(models.Model):
item = models.ManyToManyField(Item)
amount = models.PositiveIntegerField(default=1)
class Cart(models.Model):
cart_item = models.ManyToManyField(CartItem)
添加回答
舉報(bào)
