Как изменить поле поиска в Model.viewset на другой уникальный параметр в Django Rest Framework? - PullRequest
1 голос
/ 27 апреля 2020

Я использую Modelviewset в django инфраструктуре отдыха. Я хочу изменить поле поиска на email (уникальный) вместо id. Я попытался добавить lookup_field = 'email' в моем наборе схем, но он не работает. Вот что я получаю { "detail": "Not found." } Как мне решить эту проблему.

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')

enter image description here enter image description here

This is what i want but instead from mail id

1 Ответ

1 голос
/ 27 апреля 2020

Обновите ваш код следующим образом:

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 = "[^/]+"  
...