我一直试图让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)