【发布时间】:2021-12-30 05:59:59
【问题描述】:
我有以下模型、视图集和过滤器集。
class Contact(models.Model):
PERSON = 'PERSON'
ORGANIZATION = 'ORGANIZATION'
COMPANY = 'COMPANY'
TYPES = (
(PERSON, 'Person'),
(ORGANIZATION, 'Organization'),
(COMPANY, 'Company'),
)
# irrelevant fields removed
type = models.CharField(max_length=50, choices=TYPES, null=True)
class ContactViewSet(CustomViewSet):
model = models.Contact
read_serializer_class = serializers.ContactReadSerializer
write_serializer_class = serializers.ContactWriteSerializer
model_name = 'contact'
filterset_class = filtersets.ContactFilterSet
filter_backends = (filters.SearchFilter, filters.OrderingFilter, DjangoFilterBackend)
CONTACT_TYPE_CHOICES = (
'PERSON',
'COMPANY',
'ORGANIZATION'
)
class ContactFilterSet(FilterSet):
# irrelevant fields removed
type= CharFilter(
choices=CONTACT_TYPE_CHOICES,
field_name='type',
lookup_expr='in'
)
class Meta:
model = models.Contact
fields = ('related_contacts', 'type', 'subtype', 'archived', 'legal_files', 'events', 'expenses', 'invoices', 'notes')
我想按类型过滤联系人。例如,我希望我的查询对type == 'PERSON' or 'COMPANY' 的所有联系人进行响应理论上,正如我理解的django-filter reference 一样,我应该能够使用/contacts?type=PERSON&type=COMPANY 之类的查询来做到这一点。但是,这会返回匹配最右边查询的联系人(在本例中为 type=COMPANY
我做错了什么?我是不是完全用错了方法?
【问题讨论】:
标签: django-rest-framework django-filter