Использование DRF в первый раз и попытка понять, как заставить GET возвращать полную информацию о ребенке, включая полную информацию о родителе.Я хочу, чтобы POST принимал информацию о ребенке и либо идентификатор родителя, либо имя родителя при создании ребенка.
Такое ощущение, что здесь есть простое решение, которое ускользает от меня.
models.py
class TestParent(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=255)
nickname = models.CharField(max_length=255, default='ballerz')
class TestChild(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=255)
parent = models.ForeignKey(TestParent, related_name='test_children', null=True, blank=True, on_delete=models.CASCADE)
serializers.py
class TestParentSerializer(serializers.ModelSerializer):
id = serializers.UUIDField()
class Meta:
model = TestParent
fields = ('id', 'name',)
class TestChildSerializer(serializers.ModelSerializer):
parent = TestParentSerializer(many=False, allow_null=False)
class Meta:
model = TestChild
fields = ('id', 'name', 'parent')
views.py
class TestParentModelSet(viewsets.ModelViewSet):
def __init__(self, **kwargs):
self.name = "Parent API"
self.description = ""
queryset = TestParent.objects.all()
serializer_class = TestParentSerializer
class TestChildModelSet(viewsets.ModelViewSet):
def __init__(self, **kwargs):
self.name = "Child API"
self.description = ""
queryset = TestChild.objects.all()
serializer_class = TestChildSerializer
filter_fields = ('id', 'name')
search_fields = filter_fields
GET возвращает то, что я хочу и ожидаю:
{
"id": "515ff558-d0e2-4fdd-bdeb-9c5acf459687",
"name": "Test Child 01",
"parent": {
"id": "1dc3d3ce-b45a-46b4-9b62-a227949a6d87",
"name": "Foo Parent"
}
}