繁体   English   中英

Django 查询以多对多返回空结果

[英]Django query returning empty result in many to many

这是我的 model

class MenuItem(models.Model):
    name = models.CharField(max_length=500, null=False)
    description = models.CharField(max_length=500, null=True)
    image_url = models.CharField(max_length=1000, null=True)
    menu_category = models.ForeignKey(MenuCategory, on_delete=models.CASCADE)

   def __str__(self):
       return f'{self.name}'


class Venue(models.Model):
    name = models.CharField(max_length=500, null=False)
    def __str__(self):
       return f'{self.name}'

class VenueMenu(models.Model):
    venue = models.ForeignKey(Venue, null=False, on_delete=models.CASCADE)
    menu_item = models.ManyToManyField(MenuItem, null=False)

这是我的序列化器

class MenuItemSerializer(serializers.ModelSerializer):
    menu_category = MenuCategorySerializer()

    class Meta:
        model = MenuItem
        fields = '__all__'


class VenueMenuSerializer(serializers.ModelSerializer):
    menu_item = MenuItemSerializer(many=True)

    class Meta:
        model = VenueMenu
        fields = '__all__'

这是我的观点

@api_view(['GET'])
def venue_menu_response_detail(request):
    if request.GET.get('venue'):
        venue_menu_list = VenueMenu.objects.filter(venue__name=request.GET.get('venue'))
        serializer = VenueMenuSerializer(venue_menu_list, many=True)
        return Response(serializer.data)

这是我的要求http://127.0.0.1:8000/venue_menu_response_list?venue=venu_name

我想获取与单个场所关联的菜单项的详细信息,此查询的响应为 200 OK,但它返回空。 当我根据场地 id 查询时,我得到了想要的结果,但我想根据名称得到结果

尝试这个:

序列化器:

 class MenuItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = MenuItem
        fields = '__all__'


class venuMenuSerializer(serializers.ModelSerializer):
    class Meta:
        model = VenueMenu
        fields = '__all__'

意见:

@api_view(['GET'])
def venueMenuView(request):
    venuee = request.query_params.get('venue')
    venue = VenueMenu.objects.filter(venue__name=venuee)
    serializer = venuMenuSerializer(venue,many=True)
    return Response(serializer.data,status=status.HTTP_200_OK)

网址:

localhost:8000/api/yourview/?venue=venue1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM