Как получить доступ к экземпляру поля "многие ко многим" в методе django __str__
У меня есть две модели;
class Cart(models.Model):
book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name="book")
quantity = models.PositiveIntegerField(default=1, null=True, blank=True)
def __str__(self):
return f"{self.quantity} of {self.book.title}"
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
cart = models.ManyToManyField(Cart)
def __str__(self):
return f"{self.cart.quantity}"
Я получаю 'ManyRelatedManager' object has no attribute 'quantity'
. Обычно это работает для поля с внешним ключом, но, похоже, не работает для поля "многие ко многим".
Примечание: Я пытаюсь получить доступ к количеству, принадлежащему модели корзины, из модели заказа, используя поле manytomany.
Есть ли способ сделать что-то подобное?
self.cart
возвращает 'ManyRelatedManager
'.
вы должны написать что-то вроде этого:
self.cart.last().quantity
# OR
self.cart.first().quantity
или получить сумму всех, с self.cart.all()
sum([_.quantity for _ in self.cart.all()])