【发布时间】:2017-11-21 06:13:13
【问题描述】:
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>
观看次数。 py
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 的那些交易?
account_details.html 中的
2.{{ transaction.{{ search_id }} }} 不起作用,因为它是语法错误。我需要显示因用户输入而异的数据。如何在模板的单个标签内使用两个变量?
我知道我可以使用 if else 语句来解决这两个问题,但我有一个很大的不。的属性。那么,有没有更短的方法呢?
感谢任何帮助。
【问题讨论】:
-
你的模型Transaction没有
search_id字段,那怎么办?? -
例如,如果我在表单中选择“abc”,则不会通过 view.py 中的 search_id = request.POST.get("account", None) 将变量 search_id 分配给 'abc' ?
-
是的,但这是如何工作的,
Transaction.objects.exclude(search_id=0)?? manager 方法仅将字段名称作为关键字参数...请查看 django 中的查询集和查询方法! -
我明白了。有没有办法让这个关键字参数成为动态的?