@jetbird1

Как создать несколько взаимосвязанных структур одним запросом в Django RestFramework?

Итак, имеется:
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?
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы