Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DetailView通过不使用主键的两个参数进行筛选_Django_Django Models_Django Views_Django Urls - Fatal编程技术网

Django DetailView通过不使用主键的两个参数进行筛选

Django DetailView通过不使用主键的两个参数进行筛选,django,django-models,django-views,django-urls,Django,Django Models,Django Views,Django Urls,我需要用两个值过滤模型,它们都不是模型的主键 我想过滤一辆车和一周的付款,这意味着我可以在一周内为一辆车支付多笔付款 我使用Django-Tables2来显示结果 views.py models.py url.py path('paymentsbycarandweek/', views.PagosDetailView.as_view(),name='pagos_bycar') 这是我最后一次尝试几个选项,我收到以下错误消息: 通用详细信息视图PagosDetailView必须在URLconf中

我需要用两个值过滤模型,它们都不是模型的主键

我想过滤一辆车和一周的付款,这意味着我可以在一周内为一辆车支付多笔付款

我使用Django-Tables2来显示结果

views.py

models.py

url.py

path('paymentsbycarandweek/',
views.PagosDetailView.as_view(),name='pagos_bycar')
这是我最后一次尝试几个选项,我收到以下错误消息:

通用详细信息视图PagosDetailView必须在URLconf中使用对象pk或slug调用


如何准确地传递这两个参数?

经过大量搜索,我最终解决了这个问题:

class PagosDetailView(SingleTableMixin, ListView):

    model = Pagos
    table_class = PagosDetailTable
    template_name = 'AC/paymentsbycarandweek.html'
    paginate_by = 10

    def get(self, request, *args, **kwargs):
        self.object_list = self.get_queryset()
        self.object_list = self.object_list.filter(
            carro=kwargs['carro'], semana=kwargs['semana'])

        context = self.get_context_data()
    return self.render_to_response(context)
class Pagos(models.Model):

    carro = models.ForeignKey(
        Carros, on_delete=models.CASCADE, blank=False, null=False)
    pago = models.DecimalField(max_digits=6, decimal_places=2)
    fecha = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    semana = models.CharField(max_length=20)
    startweek = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    endweek = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    renta = models.ForeignKey(
        Renta, on_delete=models.PROTECT, blank=False, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = "Pagos"

    def get_absolute_url(self):
        return reverse('pagos')

    def __str__(self):
        return self.semana
path('paymentsbycarandweek/<int:carro>/<slug:semana>',
         views.PagosDetailView.as_view(), name='pagos_bycar')
class PagosDetailView(SingleTableMixin, ListView):

    model = Pagos
    table_class = PagosDetailTable
    template_name = 'AC/paymentsbycarandweek.html'
    paginate_by = 10

    def get(self, request, *args, **kwargs):
        self.object_list = self.get_queryset()
        self.object_list = self.object_list.filter(
            carro=kwargs['carro'], semana=kwargs['semana'])

        context = self.get_context_data()
    return self.render_to_response(context)