Issue
I am using Modelviewset in django rest framework. I want to change lookup field to email(unique) instead of id. I have tried adding
lookup_field = 'email'
inside my Schema viewset but it is not working. This is what i am getting
{
"detail": "Not found."
}
How do I resolve this.
my Views.py:
class SchemaViewSet(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
queryset = models.Schema.objects.all()
serializer_class = serializers.SchemaSerializer
lookup_field = 'email'
my models.py:
class Schema(models.Model):
"""Database model for Schema """
name= models.TextField()
version = models.TextField()
email = models.EmailField(unique = True )
def __str__(self):
return self.email
my serializers.py:
class SchemaSerializer(serializers.ModelSerializer):
"""Serializes Schema"""
class Meta:
model = models.Schema
fields = ( 'id', 'name', 'version', 'email')
Solution
Update your code as follow:
class SchemaSerializer(serializers.ModelSerializer):
"""Serializes Schema"""
class Meta:
model = models.Schema
fields = ("id", "email")
lookup_field = "email"
class SchemaViewSet(viewsets.ModelViewSet):
queryset = models.Schema.objects.all()
serializer_class = serializers.SchemaSerializer
lookup_field = "email"
lookup_value_regex = "[^/]+"
Answered By - Sumeet Kumar
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.