我试图从一个已经过滤过的视图中编写一个基于类的视图。然而,我无法找到如何将参数传递给CBV
我将django 3.0.4与pipenv python 3.8一起使用
例如,假设我有两个模型:
class Customer(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
email = models.EmailField()
class WorkOrder(models.Model):
date_created = models.DateField('Date', default=datetime.now)
due_date = models.DateField('Due Date')
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, verbose_name='Customer')
STATUS_CHOICES = [
('pending', 'Pending'),
('approved', 'Approved'),
('completed', 'Completed'),
('cancelled', 'Cancelled'),
]
status = models.CharField('Status of the work order', max_length=10, choices=STATUS_CHOICES, default='pending')
description = models.TextField('Description of the work')
我写了一个FBV,用于列出按状态筛选的客户的工作订单。诸如此类:
def customer_workorders(request, pk):
customer = CustomUser.objects.get(pk=pk)
pending_workorders = WorkOrder.objects.filter(customer=pk).filter(status='pending')
approved_workorders = WorkOrder.objects.filter(customer=pk).filter(status='approved')
completed_workorders = WorkOrder.objects.filter(customer=pk).filter(status='completed')
cancelled_workorders = WorkOrder.objects.filter(customer=pk).filter(status='cancelled')
context = {
'customer': customer,
'pending': pending_workorders,
'approved': approved_workorders,
'completed': completed_workorders,
'cancelled': cancelled_workorders
}
return render(request, 'reports/cusomer_workorders.html', context)
我正试图根据每个工单的状态创建一个CBV列表视图
我知道我基于类的观点应该是这样的
class CustomerWorkOrderPendingView(LoginRequiredMixin, ListView):
template_name = 'reports/customer_workorders_list.html'
def get_queryset(self):
return WorkOrder.objects.filter(customer=customer).filter(status='pending')
我的问题是如何根据CBV获取客户对象?更一般地说,如何传递参数以便在CBV中使用它进行查询
我知道我可以传递一个变量,比如
{% url 'to_some_view' variable %}
在FBV中,我可以得到变量
def a_view(request, variable):
some logic with variable
我在CBV里怎么做
谢谢你抽出时间
对于那些感兴趣的人,我想出了一个解决办法
就我而言,你似乎什么都不用做
用户id已在url中传递,而不是
只查询状态就足够了
这将返回上一个视图中列出的“用户”的工单,并添加第二个筛选器(status='pending')
相关问题 更多 >
编程相关推荐