У меня есть следующие модели :
models.py
class Ingredient(models.Model):
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class Tag(models.Model):
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
class Recipe(models.Model):
title = models.CharField(max_length=255)
photo = models.ImageField(upload_to="recipe_photo/", blank=True)
lvl_skill = models.CharField(max_length=50)
country_kitchen = models.CharField(max_length=255)
category = models.CharField(max_length=255)
step_cooking = models.TextField()
tags = models.ManyToManyField(Tag)
ingredients = models.ManyToManyField(Ingredient, through='Ingredient_count')
def __str__(self):
return self.title
class Meta:
ordering = ('title',)
class Ingredient_count(models.Model):
recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, null=True)
ingredient = models.ForeignKey(Ingredient, on_delete=models.CASCADE, null=True)
count = models.CharField(max_length=255)
def __str__(self):
return self.ingredient.name
Что бы получить данные из Ingredient_count в
serializers.py я использую:
class RecipeSerializer(serializers.ModelSerializer):
class Meta:
model = Recipe
fields = ['title', 'ingredient_count_set']
depth = 1
и в ответ я получаю данную структуру:
{'ingredient_count_set': [OrderedDict([('id', 350373), ('count', '100 г'), ('recipe', 40887), ('ingredient', 7951)]), OrderedDict([('id', 350372), ('count', '100 г'), ('recipe', 40887), ('ingredient', 8433)]), OrderedDict([('id', 350374), ('count', '1 шт.'), ('recipe', 40887), ('ingredient', 7861)]), OrderedDict([('id', 350375), ('count', '1 шт.'), ('recipe', 40887), ('ingredient', 7901)])]}
Правильно ли я получаю данные из смежной таблицы? Если нет то как правильно?
И как сделать так что бы вместо id показывалось поле name?