【发布时间】:2021-04-02 09:04:16
【问题描述】:
我有两个模型; Sets 和 Cards。一组中有许多卡片。我想得到它,以便我可以过滤在我的表中返回的卡片,但设置代码,对于下面的示例,它是khc。
我已经设法通过将filter(set__code__exact="khc") 添加到Card.objects 来使其在一定程度上工作,但这不允许用户更改网页上的过滤。
我似乎无法将code 过滤器添加到CardFilter
models.py
class Set(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
code = models.CharField(max_length=64)
...
class Card(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
...
set = models.ForeignKey(Set, on_delete=models.CASCADE, related_name='Card')
views.py
def cards_page(request):
card_list = Card.objects.filter(set__code__exact="khc").order_by('name')
card_filter = CardFilter(request.GET, queryset=card_list)
card_list = card_filter.qs
filters.py
class SetFilter(django_filters.FilterSet):
code = CharFilter(field_name='code', lookup_expr='iexact', label='', widget=TextInput(attrs={'placeholder': 'Set Code', 'class': 'page-input', 'style': 'width: 150px;'}))
name = CharFilter(field_name='name', lookup_expr='icontains', label='', widget=TextInput(attrs={'placeholder': 'Name', 'class': 'page-input', 'style': 'width: 150px;'}))
type = CharFilter(field_name='type', lookup_expr='icontains', label='', widget=TextInput(attrs={'placeholder': 'Type', 'class': 'page-input', 'style': 'width: 150px;'}))
class Meta:
model = Set
fields = ''
class CardFilter(django_filters.FilterSet):
# doesnt work # code = CharFilter(field_name='set', lookup_expr='iexact', label='', widget=TextInput(attrs={'placeholder': 'Set Code', 'class': 'page-input', 'style': 'width: 150px;'}))
name = CharFilter(field_name='name', lookup_expr='icontains', label='', widget=TextInput(attrs={'placeholder': 'Name', 'class': 'page-input', 'style': 'width: 150px;'}))
type = CharFilter(field_name='type_line', lookup_expr='icontains', label='', widget=TextInput(attrs={'placeholder': 'Type', 'class': 'page-input', 'style': 'width: 150px;'}))
class Meta:
model = Card
fields = ''
cards.html
<form method="get" class="" autocomplete="off">
{{ card_filter.form.code }}
{{ card_filter.form.name }}
{{ card_filter.form.type }}
<button class="page-btn-icon" type="submit">
...
过滤器截图:
【问题讨论】:
标签: python django django-models django-views django-filter