Feb-20-2019, 05:55 AM
I'm working on a Project using Python(3), Django(1.11) and DRF(3.6) in which I have to perform a PUT request by passing an Object instead of an ID.
Here are my models.py:
how can I make the PUT request by passing a body object?
Here are my models.py:
class Actor(models.Model):
id = models.CharField(primary_key=True, max_length=255)
login = models.CharField(max_length=255)
avatar_url = models.URLField(max_length=500)
class Repo(models.Model):
id = models.CharField(primary_key=True, max_length=255)
name = models.CharField(max_length=255)
url = models.URLField(max_length=500)
class Event(models.Model):
id = models.CharField(primary_key=True, max_length=255)
type = models.CharField(max_length=255)
actor = models.ForeignKey(Actor, related_name='actor')
repo = models.ForeignKey(Repo, related_name='repo')
created_at = models.DateTimeField()And here are my serializers.py:class ActorSerializer(serializers.ModelSerializer):
class Meta:
model = Actor
fields = ('id', 'login', 'avatar_url')
read_only_fields = ('id', 'login')
def update(self, instance, validated_data):
instance.avata_url = validated_data.get('avatar_url', instance.avatar_url)
return instance
class RepoSerializer(serializers.ModelSerializer):
class Meta:
model = Repo
fields = ('id', 'name', 'url')
class EventModelSerializer(serializers.ModelSerializer):
actor = ActorSerializer(many=False)
repo = RepoSerializer(many=False)
class Meta:
model = Event
fields = ('id', 'type', 'actor', 'repo', 'created_at')
depth = 1
def create(self, validated_data):
actor = validated_data.pop('actor')
repo = validated_data.pop('repo')
actor = Actor.objects.create(**actor)
repo = Repo.objects.create(**repo)
return Event.objects.create(actor=actor, repo=repo, **validated_data)And here's my urls.py:url(r'^actors/$', views.ActorView.as_view(), name='actors'),And finally here's the views.py:
class ActorView(generics.GenericAPIView):
serializer_class = ActorSerializer
queryset = Event.objects.all()
def update(self):
actor = Event.objects.filter(actor_id=self.request.data('id'))
print(actor)
return HttpResponse(actor)When I make a PUT request to the /actors and pass an object in the request body via Postman, it says Method Put not allowed.how can I make the PUT request by passing a body object?
