【发布时间】:2020-09-27 21:58:52
【问题描述】:
我收到一个错误,我的自定义过滤器基于下面显示的模型
class Order(models.Model):
STATUS = (
('Pending', 'Pending'),
('Out for delivery', 'Out for delivery'),
('Delivered', 'Delivered'),
)
customer = models.ForeignKey(Customer, null=True, on_delete = models.SET_NULL)
product = models.ForeignKey(Product, null=True, on_delete = models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True, null=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)
note = models.CharField(max_length=1000, null=True)
b_address1 = models.CharField(max_length=1000, null=True)
b_address2 = models.CharField(max_length=1000, null=True, blank=True, default='')
b_city = models.CharField(max_length=1000, null=True)
b_county = models.CharField(max_length=1000, null=True)
b_post_code = models.CharField(max_length=1000, null=True)
def __str__(self):
return self.product.name
我的自定义过滤器见下文
class OrderListFilter(django_filters.FilterSet):
q2 = django_filters.CharFilter(method="my_custom_order_filter")
class Meta:
model = Order
fields = ['q2']
def my_custom_order_filter(self, queryset, name, value):
return Order.objects.filter(
Q(status__icontains=value)
|Q(customer__icontains=value)
|Q(product__icontains=value))
见下文我的意见.py
def orderList(request):
order_list = Order.objects.all().order_by('id')
myFilter3 = OrderListFilter(request.GET, queryset=order_list)
order_list = myFilter3.qs
context = {'order_list':order_list, 'myFilter3':myFilter3}
return render(request, 'accounts/customer_order_list.html', context)
另见下面的模板
<div class="coolo">
<div class="form-group col-md-5 mb-10" >
<form method="get">
{% csrf_token %}
{{myFilter3.form | crispy}}
<a class="btn btn-primary" name = 'new_order' href="" role="button">NEW</a>
</div>
</div>
<div class="card card-body">
<table class="table">
<tr>
<th>ID</th>
<th>Product Name</th>
<th>Customer Name</th>
<th>Status</th>
<th>Edit Order</th>
<th>Delete Order</th>
</tr>
{% for i in order_list %}
<tr>
<td>ABC{{i.id}}</td>
<td>{{i.product}} </td>
<td>{{i.customer}}</td>
<td>{{i.status}}</td>
<td><a class="btn btn-sm btn-info" name= "edit_order" href="">Edit</a></td>
<td><a class="btn btn-sm btn-danger" href="">Delete</a></td>
</tr>
{% endfor %}
在我的模板中,我有基于我的订单模型的“订单”列表,并且在我的模板表单中,我想根据基于我的搜索表单的订单模型搜索我创建的实例。
但是我收到以下错误
FieldError at /customer_order_list/
Related Field got invalid lookup: icontains
我该如何解决这个问题?
【问题讨论】:
标签: python django-models django-forms django-views django-templates