Django和复选框

问题描述 投票:0回答:1

我在我的应用程序内部的模型上有一些布尔字段。它们默认为false,我想编写一个在true和false之间切换它们的函数。

然后在我的模板上,我希望该功能基于复选框进行操作。然后允许复选框显示检查是否为true,如果为false则不检查。

我只是不确定我是否应该使用URL和视图执行此操作,还是这是一个表单?

这是我到目前为止所得到的:

models.朋友

class CarrierCompany(models.Model):
    rgn = models.BooleanField(default=False)
    van = models.BooleanField(default=False)
    power_only = models.BooleanField(default=False)
    step_deck = models.BooleanField(default=False)
    flatbed = models.BooleanField(default=False)
    reefer = models.BooleanField(default=False)
    hotshot = models.BooleanField(default=False)
    specialized = models.BooleanField(default=False)

    def rgn_equipment(self):
        if self.rgn == False:
            self.rgn = True
        else:
            self.rgn = False
        self.save()

views.朋友

def rgn_equipment_toggle(request, pk):
    carrier_company = get_object_or_404(CarrierCompany, pk=pk)
    carrier_company.rgn_equipment()
    return redirect('accounts:carrier_company_detail', pk=pk)

URLs.朋友

urlpatterns = [
    url(r'rgn_equipment_toggle/(?P<pk>\d+)/$', rgn_equipment_toggle, name='rgn_equipment_toggle'),
]

模板

<div class="row">
  <div class="col-md-4 col-xs-12">
    <div class="x_panel tile fixed_height_235">
      <div class="x_title">
        <h3>Equipment Type
          <input type="checkbox" data-target="{% url 'accounts:rgn_equipment_toggle' pk=carriercompany.pk %}" />

          </a>
        </h3>
      </div>
      <div class="x_content">
        {{ carriercompany.rgn }}
      </div>
      <script type="text/javascript">
        $(function(){
          $('input[type="checkbox"]').change(function(){
            var item = $(this);
            if (item.is(":checked")) {
              window.location.href = item.data("target")
            }
          });
        });
      </script>
    </div>
  </div>
</div>

我可以使用按钮完美地工作,这是一个选项。我只是不确定如何使用复选框完成此操作。我假设我需要操作并显示选中/未使用Jquery检查复选框,所以我也开始使用一些代码,但我对jquery非常新。

jquery django
1个回答
0
投票

几个小时后,我解决了这个问题。傻我。我不确定这是否是最佳方式,因为它包含模板内部的逻辑,但这就是我现在解决的问题。

{% if carriercompany.rgn == True %}
   <input type="checkbox" data-target="{% url 'accounts:rgn_equipment_toggle' pk=carriercompany.pk %}" checked />
{% else %}
   <input type="checkbox" data-target="{% url 'accounts:rgn_equipment_toggle' pk=carriercompany.pk %}" />
{% endif %}

上面的相同脚本允许您切换

<script type="text/javascript">
   $(function(){
      $('input[type="checkbox"]').change(function(){
         var item = $(this);
         if (item.is(":checked")) {
         window.location.href = item.data("target")
         }else {
          window.location.href = item.data("target")
        }
       });
   });
</script>
© www.soinside.com 2019 - 2024. All rights reserved.