Django,我想从表单中获取输入,模板的内容应该根据输入

时间:2017-06-19 06:31:20

标签: django django-templates

models.py

class Transaction(models.Model):
    created_date = models.DateField('created_date')
    price = models.IntegerField(default=0)
    abc = models.IntegerField(default=0)
    pqr = models.IntegerField(default=0)
    ghi = models.IntegerField(default=0)

然后我接受用户输入

input.html

<form method="POST" action="search/" style="margin-left:5em;">
    {% csrf_token %}
  <input type="radio" name="account" value="price"> price<br>
  <input type="radio" name="account" value="abc"> abc<br>
  <input type="radio" name="account" value="pqr"> pqr<br>
  <input type="radio" name="account" value="ghi"> ghi<br>
</form>

视图。吡啶

def search(request):
    if request.method == 'POST':
        search_id = request.POST.get("account", None)
        selected_transactions = Transaction.objects.exclude(search_id=0)
        return render(request, 'stats/account_details.html', {'selected_transactions': selected_transactions,
                                                              'search_id': search_id})
    else:
        return render(request, 'stats/index.html')

我必须根据用户输入显示内容。

account_details.html

<table>
        <tr>
        <th>Transaction date</th>
        <th>{{ search_id }}</th>
      </tr>
    {% for transaction in selected_transactions %}
      <tr>
        <td>{{ transaction.created_date }}</td>
        <td>{{ transaction.{{ search_id }} }}</td>
      </tr>
    {% endfor %}

</table>

我这里有两个问题。

1. Transaction.objects.exclude(search_id=0)不起作用。它没有采用变量search_id的值。如何动态排除用户输入属性= 0的事务?

2. account_details.html中的{{ transaction.{{ search_id }} }}无效,因为它是语法错误。我需要显示不同用户输入的数据。如何在模板中的单个标记内使用两个变量?

我知道我可以使用if else语句解决这两个问题,但我有一个很大的问题。属性。那么,有没有更短的方法呢?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题1:您正在尝试在查询集过滤器中使用属性,该属性在模型中不存在。您可能希望使用模型的任何属性,例如价格或任何其他属性。

问题2:以下代码:

# control if we start knockd at init or not
# 1 = start
# anything else = don't start
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1

# command line options
KNOCKD_OPTS="-i enp0s3"
由于各种原因,

不正确。首先要尝试访问在queryset属性中不存在的created_date属性。您必须删除此属性或将其添加到模型中。您的第二行不正确,因为它的语法错误。下面的一个可能对你有帮助,并且在语法上也是正确的。

<td>{{ transaction.created_date }}</td>
<td>{{ transaction.{{ search_id }} }}</td>

编辑:您可以使用if else来比较用户选择的search_id,并根据相应的数据进行显示。

<td> {{ search_id }} </td>