Что мне нужно
Я хотел бы получить одно поле json в ответе API, в котором перечислены идентификаторы связанных объектов на основе двух обратных внешних ключей отношения. Простой пример того, что я имею в виду, представлен ниже. Я бы очень предпочел, чтобы это обрабатывалось на уровне сериализатора Django REST Framework, а не каким-то образом меняло модель, но у меня очень мало опыта DRF, и я не могу хоть убей понять, как это сделать на самом деле. это.
Пример models.py:
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet
from .models import Person
from .serializers import FamilySerializer
class FamilyViewSet(ModelViewSet):
"""
API endpoint with family data
"""
queryset = Person.objects.all()
serializer_class = FamilySerializer
permission_classes = [IsAuthenticated]
Как вы можете видеть по сравнению с первым примером json, это не совсем то, что я хочу - мне нужно одно поле json для перечисления идентификаторов детей человека («детей»), а не два ("дети_как_мать", "дети_как_отец").
Что мне нужно Я хотел бы получить одно поле json в ответе API, в котором перечислены идентификаторы связанных объектов на основе [b]двух[/b] обратных внешних ключей отношения. Простой пример того, что я имею в виду, представлен ниже. Я бы очень предпочел, чтобы это обрабатывалось на уровне сериализатора Django REST Framework, а не каким-то образом меняло модель, но у меня очень мало опыта DRF, и я не могу хоть убей понять, как это сделать на самом деле. это. Пример models.py: [code]class Person(models.Model):
father = models.ForeignKey( "self", related_name="children_as_father", blank=True, null=True, on_delete=models.SET_NULL, )
mother = models.ForeignKey( "self", related_name="children_as_mother", blank=True, null=True, on_delete=models.SET_NULL, ) [/code] Пример данных базы данных:
[/code] Что я пробовал Это то, чего удалось достичь моим экспериментам: serializers.py< /p> [code]from rest_framework.serializers import ModelSerializer, PrimaryKeyRelatedField from .models import Person
class Meta: model = Person fields = [ "pk", "first_name", "last_name", "mother", "father", "children_as_mother", "children_as_father", ] [/code] views.py [code]from rest_framework.permissions import IsAuthenticated from rest_framework.viewsets import ModelViewSet from .models import Person from .serializers import FamilySerializer
class FamilyViewSet(ModelViewSet): """ API endpoint with family data """
[/code] Как вы можете видеть по сравнению с первым примером json, это не совсем то, что я хочу - мне нужно одно поле json для перечисления идентификаторов детей человека («детей»), а не два ("дети_как_мать", "дети_как_отец").
Я хотел бы получить одно поле json в ответе API, в котором перечислены идентификаторы связанных объектов на основе двух обратных отношений внешнего ключа. Простой пример того, что я имею в виду, представлен ниже. Я бы очень предпочел, чтобы это...
Что мне нужно
Я хотел бы получить одно поле json в ответе API, в котором перечислены идентификаторы связанных объектов на основе двух обратных внешних ключей отношения. Простой пример того, что я имею в виду, представлен ниже. Я бы очень предпочел,...
Что мне нужно
Я хотел бы получить одно поле json в ответе API, в котором перечислены идентификаторы связанных объектов на основе двух обратных внешних ключей отношения. Простой пример того, что я имею в виду, представлен ниже. Я бы очень предпочел,...