2014-12-26 50 views
0

我有四個模型auth_user,B,CDauth_userB,CD的父模型。如何在POST請求發出時爲auth_user創建一個串行器,它可以插入auth_user,然後在B,CD中連續創建一條記錄。如果在任何時候發生任何異常,所有的事務都應該回滾。我可以使用DRF來實現嗎?在django rest框架中使用ForeignKey創建記錄

我的模型:

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) 

我有一個Ajax調用哪些職位

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

到應在auth_user表中創建新的用戶和使用user_id,使模型進入了一個API網址B,CD。如果它在任何時候失敗,它應該回滾auth_userB,CD中的所有交易。

如何在Django REST框架中編寫序列化程序和視圖。

+0

我可以說是的,這是可能的使用DRF。 –

+0

到目前爲止你有嘗試過什麼嗎?我們從您提供的示例開始工作並幫助您解決遇到的任何問題會更加容易。 –

+0

@KevinBrown我正在使用serializers.RelatedField來獲取數據,我可以查看相應的表對象,但不知道我是否可以用這種方式創建資源。謝謝 – mithu

回答

0

您可以使用CreateAPIView和您的B型號和自定義表格,其中需要所有字段B和所有字段User需要。然後,當您在視圖中覆蓋create函數時,首先創建User,然後再創建B

至於交易的東西,the django docs解釋一切。

相關問題