【问题标题】:passing a custom queryset to a serializer django rest framework将自定义查询集传递给序列化程序 django rest 框架
【发布时间】:2017-06-21 20:14:45
【问题描述】:

我查看了这个提交,代码中有很多混乱,我很难理解它:Pass a custom queryset to serializer in Django Rest Framework

现在,我正在尝试编写一个序列化程序,它返回我的场地表中所有城市的列表。每个城市可能有很多场馆,但我只想返回一次城市名称。

我知道我需要为此创建一个自定义模型管理器来修改查询集,但我不确定如何将它传递给序列化程序。我相当迷失在文档和示例中。我不需要写sql吗?这就是为什么没有导师真的很痛苦。

到目前为止我所拥有的。

models.py:

  class Venue(models.Model):
    name = models.CharField(max_length=150, blank=False)
    description = models.CharField(max_length=1000)
    image = models.ImageField(upload_to=imgUnique('venueMedia/venueImages'))
    streetAddress= models.CharField(max_length=100)
    city = models.CharField(max_length=100, blank=False)
    state = models.CharField(max_length=100, blank=False)

serializers.py:

from rest_framework import serializers
from models import Venue, Room

class citySerializer(serializers.Serializer):

还有我在 models.py 中的自定义模型:

class CityListManager(models.Manager):
def get_query_set(self):
    return super(CityListManager, self).get_query_set().filter

所有的代码都是不完整的,因为我想出了这个并将它们放在一起

【问题讨论】:

    标签: python django serialization


    【解决方案1】:

    所以看起来我首先做错了这里是工作代码

    # queryset for cityListView
    def getcityList():
    
        cityList = Venue.objects.raw("""SELECT  DISTINCT city
                                     FROM Venue""")
        return cityList
    
    class citySerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Venue
            fields = 'city'
            read_only_fields = 'city'
    
    class cityListViewSet(viewsets.viewSet):
    
        def list(self, request):
            queryset = getcityList()
            serializer = citySerializer(queryset, many=True)
            return Response(serializer.data)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-27
      • 2016-08-06
      • 2014-12-19
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多