модель, связанная с моделью через отношение M2O, которая дополнительно связана с моделью через отношение M2O, вызывает ошибку - PullRequest
0 голосов
/ 04 мая 2020

Я работаю над интернет-магазином в django.

Я связал модель order с моделью cart через ForeignKey, которая дополнительно связана с моделью products через ForeignKey.

models.py:

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}'

Я хотел создать объект порядка как:

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)  ####

Возникает ошибка как:

Cannot assign "'The latest one'": "order.item" must be a "cart" instance.

Почему возникает эта ошибка и как ее устранить?

1 Ответ

0 голосов
/ 04 мая 2020

Вы пытаетесь присвоить строку при создании экземпляра Order, где ожидается экземпляр Cart. Возникшая здесь ошибка:

item=cart_item.item.name

Это должно быть просто:

item=cart_item

, поскольку схема вашей модели ожидает этого:

item = models.ForeignKey(cart, on_delete=models.CASCADE) ###
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...