Ich habe ein Modell, das Benutzer als Fremdschlüssel hat:Django-Rest Sparmodell gegen einen bestimmten Benutzer
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)
Es ist Serializer:
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
Und meiner Meinung nach habe ich eine Funktion, Griffe GET
und POST
Anfrage. GET ist korrekt, es gibt mir alle Aufgaben eines bestimmten Benutzers zurück - ich benutze request.user.id
dafür.
Ich bin nicht sicher über meine POST, wie ich Aufgabe gegen einen bestimmten Benutzer in diesem Fall speichern:
@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)
Wo muss ich Änderung vornehmen, in Serializer oder in Sicht?
Brauche ich auch Benutzerfeld in meinem Wunsch JSON hinzufügen? weil es mir gab '{"user": ["Dieses Feld ist erforderlich."]}' Fehler. – Nitish
Die Antwort wurde aktualisiert. – zaidfazil
Das hat funktioniert, vielen Dank! – Nitish