Python序列化程序中的过滤条件

问题描述 投票:0回答:1

我正在尝试使用序列化器来获取模型中与模型中的布尔条件匹配的所有场所。我试图获得所有符合条件的场地,即“已赞助”。这是我到目前为止的内容:

型号

class Venue(models.Model):
    venue_name = models.CharField(max_length=500, blank=False)
    venue_photo = models.ImageField(upload_to= ‘venue_photo/', blank=False, default='')
    venue_logo = models.ImageField(upload_to= ‘venue_logo/', blank=False, default='')
    description = models.CharField(max_length=250, blank=True)
    phone = models.CharField(max_length=500, blank=True)
    ratings = models.FloatField(default="0.0", blank=True)
    sponsored_venue = models.BooleanField(default=False)
    signup = models.DateTimeField(default = timezone.now)
    last_signin = models.DateTimeField(default = timezone.now)
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name=‘venue')

序列化器

class VenueSerializer(serializers.ModelSerializer):
    venue_logo = serializers.SerializerMethodField()
    venue_photo = serializers.SerializerMethodField()

    opening_hours = OpeningHoursSerializer(
        many=True, source='openinghours_set', read_only=True)

# shows these fields from each venue signed up
    def get_venue_logo(self, venue):
        request = self.context.get('request')
        venue_logo_url = venue.venue_logo.url
        if venue_logo_url:
            return request.build_absolute_uri(venue_logo_url)
        return ""
    def get_venue_photo(self, venue):
        request = self.context.get('request')
        venue_photo_url = venue.venue_photo.url
        if venue_photo_url:
            return request.build_absolute_uri(venue_photo_url)
        return ""
    class Meta:
        model = venue
        fields = ("id", "venue_name", "phone", "street_address", "venue_logo", "venue_photo",
                  "street_address", "city", "state", "zip_Code", "lat", "lng", 'latlng', 'opening_hours', "ratings")
python django serializer
1个回答
0
投票

串行器仅负责您提供的数据的序列化过程。您可以在调用序列化程序的位置(可能从视图中)控制Model QuerySet

类似这样的东西,

qs = Venue.objects.filter(sponsored_venue=True)
serializer = VenueSerializer(qs, many=True)
serialzed_data= serializer.data 
© www.soinside.com 2019 - 2024. All rights reserved.