亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 ManToManyField() 在 Django 中創建購物車

使用 ManToManyField() 在 Django 中創建購物車

精慕HU 2023-04-11 16:08:42
我的模型中有三個類別,每個類別都有價格。我想創建 Cart 對象。我如何使用 ManToManyField 在一個 CartItem 中傳遞所有 3 個。models.pyclass Women(models.Model):    photo = models.ImageField(upload_to='media')    title = models.CharField(max_length=20)    description = models.CharField(max_length=150)    price = models.IntegerField()    objects = models.manager    def __str__(self):        return self.title    class Meta:        verbose_name_plural = 'Women'class Men(models.Model):    photo = models.ImageField(upload_to='media')    title = models.CharField(max_length=20)    price = models.IntegerField()    description = models.CharField(max_length=150)    objects = models.manager    def __str__(self):        return self.title    class Meta:        verbose_name_plural = 'Men'class Kids(models.Model):    photo = models.ImageField(upload_to='media')    title = models.CharField(max_length=20)    price = models.IntegerField()    description = models.CharField(max_length=150)    objects = models.manager    def __str__(self):        return self.title    class Meta:        verbose_name_plural = 'Kids'我想創造類購物車(模型。模型):和類 CartItem(模型。模型):
查看完整描述

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)


查看完整回答
反對 回復 2023-04-11
  • 1 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號