Фильтрация вариантов иностранных ключей в сериализаторе Django
У меня есть модель Django, которая выглядит как приведенный ниже код. На данный момент, когда я использую django rest framework для создания нового экземпляра меню, столбец блюда содержит варианты, созданные всеми пользователями платформы. Как я должен отфильтровать столбец блюд, чтобы в нем были только варианты, созданные пользователем? Должен ли я делать это в представлениях или сериализаторе?
Заранее благодарю за ответ.
class Dish(models.Model):
user = models.ForeignKey(
User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=280)
description = models.CharField(max_length=280)
image = models.ImageField(upload_to='static/images/post_image',
default='static/images/post_image/default.jpg')
def __str__(self):
return f'{self.title}'
def get_image_url(self, obj):
return obj.image.url
class Menu(models.Model):
user = models.ForeignKey(
User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=280)
description = models.CharField(max_length=280)
dish = models.ManyToManyField(Dish)
price = models.SmallIntegerField(
validators=[MinValueValidator(1), MaxValueValidator(10000)], default=None)
def __str__(self):
return f'{self.title}'
Предполагая, что у вас есть объект user
, вы можете получить все блюда, связанные с этим объектом user
следующим образом:
user.dish_set
Если вы хотите найти все меню, в которых есть определенные меню по владельцу блюда. Это можно сделать следующим образом
Menu.objects.filter(dish__user=user)
Размещение этого зависит от того, чего вы пытаетесь достичь. Если вы хотите проверить правильность вводимых данных, место должно быть в сериализаторе