相关疑难解决方法(0)

如何使用ModelMultipleChoiceFilter?

我一直试图让ModelMultipleChoiceFilter工作几个小时,并阅读了DRF和Django Filters文档.

我希望能够根据通过ManyToManyField分配给它们的标记来过滤一组网站.例如,我希望能够获得已标记为"烹饪"或"养蜂"的网站列表.

这是我当前models.py的相关片段:

class SiteTag(models.Model):
    """Site Categories"""
    name = models.CharField(max_length=63)

    def __str__(self):
        return self.name

class Website(models.Model):
    """A website"""
    domain = models.CharField(max_length=255, unique=True)
    description = models.CharField(max_length=2047)
    rating = models.IntegerField(default=1, choices=RATING_CHOICES)
    tags = models.ManyToManyField(SiteTag)
    added = models.DateTimeField(default=timezone.now())
    updated = models.DateTimeField(default=timezone.now())

    def __str__(self):
        return self.domain
Run Code Online (Sandbox Code Playgroud)

我目前的views.py片段:

class WebsiteFilter(filters.FilterSet):
    # With a simple CharFilter I can chain together a list of tags using &tag=foo&tag=bar - but only returns site for bar (sites for both foo and bar exist).
    tag = django_filters.CharFilter(name='tags__name')

    # THE …
Run Code Online (Sandbox Code Playgroud)

python django django-filter django-rest-framework

11
推荐指数
1
解决办法
5667
查看次数