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语句解决这两个问题,但我有一个很大的问题。属性。那么,有没有更短的方法呢?
感谢任何帮助。
答案 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>