Django как сделать запрос на отношения "многие ко многим

Это моя модель

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)

вот мой URL http://127.0.0.1:8000/venue_menu_response_list?venue=venu_name

Я хочу получить все заведения и пункты меню, связанные с этим заведением, этот запрос возвращает пустой результат, поэтому я думаю, что проблема в моем запросе.

Попробуйте эти варианты и посмотрите. Убедитесь, что вы передаете место проведения в запросе get

from django.http import Http404

@api_view(['GET'])
def venue_menu_response_detail(request):
        try:
            venue_name = request.query_params['venue']
        except:
            raise Http404
        venue_menu_list = VenueMenu.objects.all().filter(venue__name=venue_name)
        serializer = VenueMenuSerializer(venue_menu_list, many=True)
        return Response(serializer.data)

ИЛИ

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

Также, пожалуйста, покажите мне ваши урлы

добавить сериализатор места:

class VenueSerializer(serializers.ModelSerializer):

    class Meta:
        model = Venue
        fields = ('id', 'name')
      

Затем измените VenueMenuSerializer следующим образом:

class VenueMenuSerializer(serializers.ModelSerializer):
    menu_item = MenuItemSerializer(many=True)
    venue = VenueSerializer(many=False) # if have multiple record set it True

    class Meta:
        model = VenueMenu
        fields = '__all__'
Вернуться на верх