2017-07-22 33 views
1

我有有用戶作爲外鍵的模式:Django的休息節能模式

class Task(models.Model): 
    user = models.ForeignKey(User) 
    what_task = models.CharField(max_length=100,) 

    #This helps to print in admin interface 
    def __str__(self): 
     return u"%s" % (self.what_task) 

這是串行:

class TaskSerializer(serializers.ModelSerializer): 
    steps = StepSerializer(many=True) 
    class Meta: 
     model = Task 
     fields = '__all__' 


    def create(self, validated_data): 
     steps_data = validated_data.pop('steps') 
     task = Task.objects.create(**validated_data) 
     for step_data in steps_data: 
      Step.objects.create(task=task, **step_data) 
     return task 

在我看來,我有一個功能,處理GETPOST請求。 GET是正確的,它返回特定用戶的所有任務 - 我使用request.user.id

我不知道我的帖子,我如何能夠拯救任務針對特定用戶在這種情況下:

@api_view(['GET', 'POST']) 
def task_list(request): 
    """ 
    List all tasks, or create a new task. 
    """ 
    if request.method == 'GET': 
     tasks = Task.objects.filter(user=request.user.id) 
     serializer = TaskSerializer(tasks, many=True) 
     return Response(serializer.data) 

    elif request.method == 'POST': 
     serializer = TaskSerializer(data=request.data) 
     print(request.data) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     else: 
      return Response(
       serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

如果我必須做出改變,在串行或看法?

回答

1

變化的模型,

user = models.ForeignKey(User, blank=True) 

然後,遷移更改。

然後,在你的看法,

if serializer.is_valid(): 
    serializer.save(user=request.user) 
+0

難道我還需要添加在我的請求JSON用戶字段?因爲它給了我'{「user」:[「這個字段是必需的。」]}'錯誤。 – Nitish

+0

更新了答案。 – zaidfazil

+0

工作,非常感謝! – Nitish