Итак, имеется:
class P(models.Model):
...
class C(models.Model):
p = models.ForeignKey(P, ...)
bl = models.OneToOneField(BL)
class BL(models.Model):
name = models.CharField...
class CSerializer(serializers.ModelSerializer):
class Meta:
model = C
class BLSerializer(serializers.ModelSerializer):
...
class Meta:
model = BL
fields = ('id', 'name', 'c')
...
Я строю API на основе generic.ListCreateAPIView, а также generic.RetrieveUpdateDestroyAPIView, который принимает, скажем, такие урлы:
POST /api/bls/
GET /api/bls/
GET /api/bls/id
PUT /api/bls/id
Мне нужно, чтобы при создании BL одновременно создавался C (который 1-к-1 с BL), причем для
создания C необходимо указать P.id: c = C(P.id)
Т.е. чтобы обмен в JSON выглядел как-то так:
При создании:
{
'p': какой-нибудь id из P,
'name': 'BL_1'
}
а полученная структура в моделях вот так:
BL
BL.c # (экземпляр C, которому при создании необходим p_id)
BL.c.p # (экземпляр P)
Я пробовал воспользоваться стандартными средствами, и
Сейчас для получения желаемой структуры в POST надо послать:
{
'c': {
'p': какой-нибудь id из P,
},
'name': "BL_1"
}
Как такое сделать на Django RestFramework?