Фильтрация отношения многие ко многим - PullRequest
0 голосов
/ 31 января 2020

Я делаю API с rest-framwork для django 3

У меня есть модель, которая имеет отношение многие ко многим.

тогда, теперь я хочу использовать фильтр для многих ко-многим

в models.py

class Text(models.Model):
    t_id = models.CharField(unique=True,null=False,max_length=20)
    t_text = models.TextField(null=True)
    issues = models.ManyToManyField(Issue) # It is many-to-many relationship
    pub_date = models.DateTimeField('date published')
    def __str__(self):    
        return self.t_id  


class Issue(models.Model):
    name = models.CharField(unique=True,max_length=255)
    aka = models.CharField(max_length=2000,blank=True)
    def __str__(self):
        return self.name

в serializer.py

class TextFilter(filters.FilterSet):
    t_text = filters.CharFilter(lookup_expr='contains') # it works
    issues = filter.***Filter # How should I do here??

    class Meta:
        model = Text
        fields = ('t_text','issues')

1 Ответ

1 голос
/ 31 января 2020

По умолчанию ModelMultipleChoiceFilter используется для ManyToManyField:

class TextFilter(filters.FilterSet):
    t_text = filters.CharFilter(lookup_expr='contains') # it works
    issues = filter.ModelMultipleChoiceFilter(
        field_name='issues__uuid',
        queryset=Issue.objects.all(),
    )
...