Как получить доступ к экземпляру поля "многие ко многим" в методе 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()])
Вернуться на верх