简体   繁体   English

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

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

This is my model这是我的 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)

This is my serializer这是我的序列化器

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

and this is my view这是我的观点

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

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

I want to get the details of menu items associated with a single venue this query has the response of 200 OK but it is returning empty.我想获取与单个场所关联的菜单项的详细信息,此查询的响应为 200 OK,但它返回空。 When am querying on the basis of venue id am getting the desired result but I want to get the result on the basis of the name当我根据场地 id 查询时,我得到了想要的结果,但我想根据名称得到结果

try this:尝试这个:

serializer:序列化器:

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


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

views:意见:

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

urls:网址:

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

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

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