【发布时间】:2020-08-10 15:04:58
【问题描述】:
我在 django rest 框架中使用 Modelviewset。我想将查找字段更改为电子邮件(唯一)而不是 id。我试过添加
lookup_field = 'email' 在我的 Schema 视图集中,但它不起作用。这就是我得到的
{
"detail": "Not found."
}
我该如何解决这个问题。
我的 Views.py:
class SchemaViewSet(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
queryset = models.Schema.objects.all()
serializer_class = serializers.SchemaSerializer
lookup_field = 'email'
我的模型.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
我的序列化程序.py:
class SchemaSerializer(serializers.ModelSerializer):
"""Serializes Schema"""
class Meta:
model = models.Schema
fields = ( 'id', 'name', 'version', 'email')
【问题讨论】:
-
对我来说一切都很好,您是否尝试过仅继承 viewsets.ModelViewSet 而不是 mixins?也许是这样?
-
是的,我试过了。它也不起作用。无论如何,viewsets.ModelViewSet 和 mixins 是相似的,只是我不想放置、修补和删除,这就是为什么要使用 mixins
标签: django django-models django-rest-framework django-views