首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过M2O关系与模型连接的模型,再通过M2O关系与模型进一步链接,会产生误差。

通过M2O关系与模型连接的模型,再通过M2O关系与模型进一步链接,会产生误差。
EN

Stack Overflow用户
提问于 2020-05-04 07:26:17
回答 1查看 15关注 0票数 0

我在django的一家网上商店工作。

我将order模型与cart模型通过ForeignKey连接起来,并通过ForeignKeyproducts模型进一步链接。

models.py

代码语言:javascript
复制
class products(models.Model):
    image = models.ImageField(upload_to='products/')
    name =  models.CharField(max_length=50)
    slug = models.SlugField(blank=True, unique=True)
    title = models.CharField(max_length=50)
    price = models.FloatField()

    def __str__(self):
        return self.name

class cart(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)         
    item = models.ForeignKey(products, on_delete=models.CASCADE) ###
    slug = models.CharField(max_length=50, default='#')
    quantity = models.IntegerField(default=1)                       
    created_on = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.quantity} of {self.item.name}'

    def get_total(self):
        total = self.item.price * self.quantity
        floattotal = float("{0:.2f}".format(total))
        return floattotal

class order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    item = models.ForeignKey(cart, on_delete=models.CASCADE) ###
    slug = models.SlugField()
    quantity = models.IntegerField()
    created_on = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.quantity} of {self.item.item__name}'

我想将order的对象创建为:

代码语言:javascript
复制
def order_view(request, slug):
    cart_qs = cart.objects.filter(user=request.user, slug=slug)
    cart_item = cart_qs[0]
    order.objects.create(user=request.user, item=cart_item.item.name, slug=slug, quantity=cart_item.quantity)  ####

它会引发错误,因为:

代码语言:javascript
复制
Cannot assign "'The latest one'": "order.item" must be a "cart" instance.

为什么会出现此错误,以及如何解决此问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-04 08:01:55

您正在尝试在Order实例创建中分配字符串,其中它期望有一个Cart实例。在此引发的错误:

代码语言:javascript
复制
item=cart_item.item.name

它应该是简单的:

代码语言:javascript
复制
item=cart_item

,因为您的模型模式预期如下:

代码语言:javascript
复制
item = models.ForeignKey(cart, on_delete=models.CASCADE) ###
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61587100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档