2014-12-26 3 views
0

auth_user, B, CD의 네 가지 모델이 있습니다. auth_userB, CD의 상위 모델입니다. POST 요청이 오면 auth_user의 serializer를 만들 수 있습니다. 을 삽입 한 다음 B, CD에 레코드를 연속으로 만듭니다. 어느 시점에서 예외가 발생하면 모든 트랜잭션을 롤백해야합니다. DRF를 사용하여 이것을 달성 할 수 있습니까?django rest framework에서 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) 

나는 auth_user 테이블에 새로운 사용자를 생성하고 user_id 모델의 항목을 만들 것을 사용해야하는 API의 URL에있는 게시물

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

를 아약스 호출을 데 B, CD. 언제든지 실패하면 auth_user, B, CD의 모든 트랜잭션을 롤백해야합니다.

Django REST Framework에서 직렬화와 뷰를 작성하려면 어떻게해야합니까?

+0

예, DRF를 사용할 수 있습니다. –

+0

지금까지 시도한 적이 있습니까? 귀하가 제공 한 예를 통해보다 쉽게 ​​작업 할 수 있으며, 발생한 문제를 해결하는 데 도움이됩니다. –

+0

@KevinBrown serializers.RelatedField를 사용하여 데이터를 가져오고 해당 테이블 개체를 볼 수 있지만 그 방법으로 리소스를 만들 수 있는지 여부는 확실하지 않습니다. 감사 – mithu

답변

0

당신은 모든 필드 B 요구와 모든 필드 User 필요를 가지고 당신의 B 모델과 사용자 지정 양식과 CreateAPIView를 사용할 수 있습니다. 그런 다음 create 함수를 재정의하면 처음에는 User을 만들고 B을 만듭니다.

거래 물건의 경우 the django docs은 모두 설명합니다.

관련 문제