Django如何使用| yesno来切换视图

时间:2017-06-20 12:52:51

标签: html django toggle

我需要在html中创建一个切换,允许我在两个单独的模型中切换数据。以下是我用过的html中的代码行:

HTML:

<a class="btn btn-success pull-right" href="{{ url }}{{ seller|yesno:"?seller=true,?seller=false,?seller=test"}}" >

查看:

seller = False

    def get(self, request, *args, **kwargs):
        if self.request.GET.get('seller', None) == '?seller=true':
            self.model = CarSeller
            self.seller = True
        elif self.request.GET.get('seller', None) == '?seller=false':
            self.model = VanSeller
            self.seller = False

        return super().get(request, *args, **kwargs)

    def get_queryset(self):
        if self.model == CarSeller:
            com = self.model.objects.filter(
                carparty=self.vehicle.proff.car_contact.garage,
            )
        else:
            com = self.model.objects.filter(
                vanparty=self.vehicle.proff.van_contact,
            )
        return communication

    def get_context_data(self, **kwargs):
        context['seller'] = self.seller
        context['url'] = reverse_lazy(
            "work:contact:comm_intro",
            kwargs={'vehicle_id': self.vehicle.id}
        )

        return context

根据我对阅读有关使用yesno的理解,这应该有效,但是一旦我点击按钮,它将交换为true,但是当我再次按下它时,值不会变回false。所有帮助赞赏使用| yesno或任何建议你如何认为我应该显示这一点。您可能看到的与模型无关且与问题无关的任何变量可能是因为我已经将其略过了问题。

由于

(还需要其他任何东西让我知道)

1 个答案:

答案 0 :(得分:0)

卖家的价值为'true''false'(或test None)。您应该从比较中的字符串中删除?seller=,例如

self.request.GET.get('seller', None) == 'true'

由于Noneget()的默认设置,因此您可以进一步简化为

self.request.GET.get('seller') == 'true'