Я использую Angular 8 и Django 3. Я хочу создать страницу для Restaurant
, которая показывает все Recipes
, которые есть у Restaurant
. У меня есть модель Restaurant
и модель Recipe
с отношением ForeignKey
следующим образом:
РЕДАКТИРОВАТЬ: models.py
class Restaurant(models.Model):
name = models.CharField(max_length=100)
class Recipe(models.Model):
name = models.CharField(max_length=30)
restaurant = models.ForeignKey(Restaurant, related_name='recipe', on_delete=models.CASCADE)
def __str__(self):
return self.name
Я сериализирую данные для Restaurant
, используя PrimaryKeyRelatedField
:
serializers.py
class RestaurantDetail(serializers.ModelSerializer):
recipe = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Restaurant
fields = ('id', 'name', 'food', 'recipe')
Когда я вставляю URL ( http://127.0.0.1:8000/restaurants/restaurantdetail/2
) в Почтальоне я получаю правильные данные ответа, потому что он дает мне имя Restaurant
, а также массив значений Recipe
pk
, которые относятся к Restaurant
. Поэтому я сериализуюсь правильно.
{
"id": 2,
"name": "sec",
"recipe": [
3,
4
]
}
Однако я хочу, чтобы в моем файле Angular html
был доступ к имени каждого Recipe
в массиве. Все, что я могу получить, это pk
значение, когда я oop по массиву. Есть ли простой способ сделать это или мне нужно создать еще один компонент Angular, который идет и ищет и возвращает новый объект Recipe
для каждого значения pk
.
Другими словами, я предполагаю, что сериализатор не возвращает объект Recipe
, а просто его значение pk
?