【问题标题】:Django how to filter table with dropdown menu?Django如何使用下拉菜单过滤表?
【发布时间】:2020-10-01 03:01:05
【问题描述】:

我创建了一个收集所有日常收入的应用程序。模型如下:

class Income(models.Model):
        date=models.DateField('', default="GG/MM/YYYY")
        income=models.DecimalField()

我创建了一个简单的模板,其中包含表单和收集了所有数据的数据表。

<form method="post">
<div class="row">
h5>Income data collection</h5>
<div class="row">
             <div class="form-group col-2 0 mb-0" >
                 {{form.income|as_crispy_field}}
             </div>
             <div class="form-group col-2 0 mb-0" >
                 {{form.date|as_crispy_field}}
             </div>
  </div>
        <table class="table" >           
          <thead>
            <tr>
              <th>Income</th>
              <th>Date</th>
            </tr>
          </thead>
          <tbody>
              {% for inc in income%}
              <tr>
                  <td>{{inc.income}}</td>
                  <td>{{inc.date}}</td>                  
              </tr>
              {% endfor %}
          </tbody>
        </table>

在视图中我添加了以下过滤器:

income=Income.objects.filters(data__year='2020')

此时,我创建了另一个模型,将参考年份设置如下:

我有以下型号

class Timing(models.Model):
    reference_year=models.DecimalField(max_digits=4, decimal_places=0, default="2020")

此模型具有表单视图,使客户可以注册所有参考年份(2020、2021 等)。现在我想将reference_yearincomeviews.py 链接起来。如何?带有一个下拉菜单,其中包含所有已填充的 reference_year。 因此,例如,如果客户在时序模型中保存的 reference_year 等于 2020,则客户可以在下拉列表中选择它,并且视图会动态更新过滤器。

【问题讨论】:

    标签: jquery django ajax django-models django-views


    【解决方案1】:

    在你的 models.py 中添加这两个模型之间的一对一关系。

    django 文档中给出了以下程序,您可以将其用作参考。

        from django.db import models
    
    class Place(models.Model):
        name = models.CharField(max_length=50)
        address = models.CharField(max_length=80)
    
        def __str__(self):
            return "%s the place" % self.name
    
    class Restaurant(models.Model):
        place = models.OneToOneField(
            Place,
            on_delete=models.CASCADE,
            primary_key=True,
        )
        serves_hot_dogs = models.BooleanField(default=False)
        serves_pizza = models.BooleanField(default=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-14
      • 2013-06-22
      • 1970-01-01
      • 2013-11-04
      • 2018-09-06
      • 2015-04-02
      • 2018-01-21
      相关资源
      最近更新 更多