Как получить все объекты, которые находятся в поле ManyToMany в моделях Django

У меня есть две модели, и во второй модели я создал поле ManyToMany

class Listing(models.Model):
    title = models.CharField(max_length=50)
    name = models.CharField(max_length=100)
    description = models.TextField()
    starting_bid = models.IntegerField()
    category = models.CharField(max_length=50, blank=True)
    image = models.TextField(blank=True)
    posted_by = models.ForeignKey(User, on_delete=models.CASCADE)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.title
    

class Catagories(models.Model):
    category = models.CharField(max_length=100)
    listings = models.ManyToManyField(Listing, blank=True, related_name="cat")
 

Допустим, я создал категорию "Электроника" и сохранил в ней 3 объявления с заголовком "Мобильный телефон, ноутбук, микроволновая печь".

Теперь я хочу получить все объявления внутри этой категории и не получаю их.

Теперь вопросы:

Как получить все элементы листинга в данной категории?

Вы можете фильтровать с помощью:

my_category.listings.all()

Таким образом, мы имеем Category с именем mycat и можем извлечь Listing из этого Category.

Если у вас есть только название категории, вы можете работать с:

Listing.objects.filter(cat__category='my category name')
Вернуться на верх