Получить список категорий на основе зарубежной модели в django - PullRequest
0 голосов
/ 06 мая 2020

У меня две модели, как показано ниже.

class Category(models.Model):
    title = models.CharField(max_length=55)

    class Meta:
        verbose_name = 'Food Category'
        verbose_name_plural = 'Food Categories'

    def __str__(self):
        return self.title

class FoodItem(TimeStampWithCreator):
    CATEGORY_CHOICES = (
        ('takeway', 'Takeaway'),
        ('dine_in', 'Dine In'),
        ('function', 'Function'),
    )
    type_menu_select = models.CharField(max_length=20, choices=CATEGORY_CHOICES, default='takeway')
    category = models.ForeignKey(FoodCategory, on_delete=models.CASCADE)

Я хочу отфильтровать все категории, содержащие еду на вынос, я не знаю, как этого добиться

Ответы [ 2 ]

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

Обычно это то, что я хотел бы протестировать в оболочке, потому что я делаю это не очень часто. Если на самом деле все, что вам нужно, это Category с FoodItem, у которых type_menu_select установлено на 'takeway', тогда должно работать следующее (но я его не тестировал):

Category.objects.filter(fooditem__type_menu_select='takeway')

Это использует «обратное» отношение для ForeignKey, и дополнительную информацию можно найти в Django документах (поиск по запросу «reverse») .

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

Вы включили варианты категорий в свою модель FoodItem, но модель также имеет ForeignKey для модели категории, это не требуется, если у вас есть только эти три объекта категории (поле категории должно относиться к одному из в любом случае, поскольку это ForeignKey). Чтобы отфильтровать элементы по категории, вам необходимо использовать фильтр набора запросов.

https://docs.djangoproject.com/en/3.0/topics/db/queries/#retrieving -specifi c -objects-with-filters

FoodItem.objects.filter(category=YourCategory)
...