Как получить все объекты, которые находятся в поле 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')