Django'yu öğreniyorum ve Django REST framework'ü kullanarak bir Game REST API'si oluşturmaya çalışıyorum. Yayıncı alanını nasıl güncelleyeceğimi bilmiyorum. Yayıncı sınıfım için başka bir Serializer oluşturmam gerekiyor ve bir kaydetme yöntemi uygulamak?PrimaryKeyRelatedField üzerinde bir PUT isteği gönderilemiyor
Ben bir PUT isteği göndermek için postacı kullanıyorum ve bu recieving am:
"publisher": [
"Incorrect type. Expected pk value, received unicode."
]
Ben bir JSON isteği
{
"name": "Test",
"release_date": "1979-01-01",
"rating": 5,
"comment": "Terrible Game!",
"publisher": "Me"
} gönderirken
models.py
class Publisher(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Game(models.Model):
name = models.CharField(max_length=100)
release_date = models.DateField(null=True, blank=True)
rating = models.IntegerField(
null=True, blank=True,
validators=[MinValueValidator(0), MaxValueValidator(5)])
comment = models.TextField(null=True, blank=True)
publisher = models.ForeignKey(Publisher, null=True, blank=True)
def __unicode__(self):
return self.name
class Meta:
ordering = ('name',)
seri views.py
class GameDetail(APIView):
"""
Retrieve, update or delete a game instance.
"""
def get_object(self,pk):
try:
return Game.objects.get(pk=pk)
except Game.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
game = self.get_object(pk)
serializer = GameSerializer(game)
return Response(serializer.data)
def put(self, request, pk, format=None):
game = self.get_object(pk)
serializer = GameSerializer(game, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
game = self.get_object(pk)
game.delete()
return Response(status=status.HTTP_204_NO_CONTENT)