2014-10-18 69 views
0

我無法讓Django rest框架創建具有依賴關係的對象。簡而言之,這是簡化的配置,可用於其他部分更新,刪除和創建Employee。但是,在創建與員工外鍵的情況下失敗。Django rest框架發佈對象與關係無法創建

models.py

class Employee(models.Model): 
    firstName = models.CharField(max_length=50) 
    lastName = models.CharField(max_length=50) 

class Case(models.Model): 
    title = models.CharField(max_length=100) 
    author = models.ForeignKey(Employee, related_name='cases_created') 

serializers.py

class SCase (serializers.HyperlinkedModelSerializer): 
    author = SEmployeeList(required = True) 
    class Meta: 
     model = models.Case 
     fields = ('url', 'title', 'author', 'id') 
class SEmployee(serializers.HyperlinkedModelSerializer): 
     cases_created = SCaseList(many=True, required=False) 
     class Meta: 
      model = models.Employee 
      fields = ('url', 'firstName', 'lastName','cases_created', 'id') 

views.py

class EmployeeViewSet(viewsets.ModelViewSet): 
    queryset = models.Employee.objects.all() 
    serializer_class = serializers.SEmployee 

class CaseViewSet(viewsets.ModelViewSet): 
    queryset = models.Case.objects.all() 
    serializer_class = serializers.SCase 

是問題,當我創建對象的情況下,必須有作者的參考。

  1. 傳遞現有對象創建案例和新僱員

POST

{"author":{"url":"http://localhost:8000/restbase/employee/23/", 
      "firstName":"Mark", 
      "lastName":"Hilton", 
      "cases_created":[], 
      "id":23}, 
"title":"New Case" 
} 
  • 只通過網址和現有作者失敗,因爲創建作者失敗。
  • POST

    {"author":"http://127.0.0.1:8000/restbase/employee/23/","title":"New Case"} 
    

    RESPONSE

    {"author": [{"non_field_errors": ["Invalid data"]}]} 
    
  • 傳遞唯一URL作爲作者的場帶來以下resposne
  • POST

    {"author":{"url":"http://127.0.0.1:8000/restbase/employee/23/"},"title":"New Case"} 
    

    響應

    {"author": [{"lastName": ["This field is required."], "firstName": ["This field is required."]}]} 
    

    回答

    0

    調查更深的是有工作的解決方案後。作者不能被序列化。

    class SCase (serializers.HyperlinkedModelSerializer): 
        # removed line: author = SEmployeeList(required = True) 
        class Meta: 
         model = models.Case 
         fields = ('url', 'title', 'author', 'id') 
    

    我還是不知道如何使用的詳細信息,並創建依賴元素

    相關問題