2014-12-26 5 views
0

У меня есть четыре модели, B, C и D. auth_user является исходной моделью для B, C и D. Как я могу создать сериализатор для auth_user, когда приходит запрос POST, он может вставить auth_user, а затем он создает запись в B, C и D серийно. Если какое-либо исключение возникает в любой момент, все транзакции должны быть отброшены. Могу ли я достичь этого с помощью DRF?Создание записей с использованием ForeignKey в каркасе отдыха django

мои модели:

class B(models.Model): 
    user = models.ForeignKey(auth_user) 
    name = models.CharField(max_length = 10) 

class C(models.Model): 
    user = models.ForeignKey(auth_user) 
    owner = model.ForeignKey(auth_user) ## existing user ID 
    phone = models.CharField(max_length = 20) 

class D(models.Model): 
    key = models.CharField(max_length = 10) 
    user = models.ForeignKey(auth_user) 

Я имею АЯКС вызов, который сообщения

{'owner_id':1,'name':xxx,'phone':899,'key':123} 

к API URL, который должен создать новый пользователь в auth_user таблице и использовать что user_id сделать запись в модели B, C, и D. Если он не удастся в любой момент, он должен отменить всю транзакцию в auth_user, B, C и D.

Как я могу написать сериализатор и представления для этого в Django REST Framework.

+0

Могу сказать, что да, это возможно с использованием DRF. –

+0

Вы что-то пробовали? Нам легче работать на примере, который вы предоставляете, и помочь вам исправить любые проблемы, с которыми вы столкнулись. –

+0

@KevinBrown Я использую serializers.RelatedField для получения данных, и я могу просматривать соответствующий объект таблиц, но не уверен, могу ли я создать ресурс таким образом. благодаря – mithu

ответ

0

Вы можете использовать CreateAPIView с B модели и пользовательской формой, который имеет все поля B потребности и все поля User потребности. Затем, когда вы переопределите функцию create в своем представлении, сначала создайте User, а затем B.

Что касается сделок, the django docs объясните все.

Смежные вопросы