Używam Django REST Framework do tworzenia interfejsu API dla mojej aplikacji internetowej. Mam klasy "Komentarz", który ma depth=2
ustawiony w klasie Meta
. Działa to świetnie, gdy GET
ing Comments
. Kiedy próbuję wysłać żądanie POST
lub PUT
(tj. Utworzyć nową Comment
), powiedziano mi, że muszę dołączyć obiekty zamiast identyfikatorów kluczy obcych.Django REST Struktura inna głębokość dla POST/PUT?
Oto moja klasa serializer:
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
depth = 2
Model:
class Comment(models.Model):
user = models.ForeignKey(User, null=True, blank=True,
related_name='comments')
budget = models.ForeignKey(Budget, related_name='comments')
published = models.BooleanField(default=False)
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
Kod widok:
class Comments(generics.ListCreateAPIView):
model = Comment
serializer_class = CommentSerializer
def pre_save(self, obj):
obj.user = self.request.user
i błąd, który jest wyświetlany na wyjściu (JSON) jest :
{"user": ["This field is required."], "budget": [{"non_field_errors": ["Invalid data"]}]}
Kiedy to surowe dane są wysyłane:
{"budget": 2, "published": true, "body": "Another comment"}
Losowe pytanie, co się stanie, jeśli wyślesz '{" budget_id ": 2}' lub '{" budget ": {" id ": 2}}'? –
RE @Nathan Villaescusa. następnie oczekuje, że w innych polach budżetu będą one wyświetlane zgodnie z wymaganiami. – panchicore