我必须首先说我是Django的新手(Python我知道:))。
让我告诉你到目前为止我有什么,然后我会讨论这个问题。
model
:
class Machine(models.Model):
name = models.CharField(max_length=255, primary_key=True)
user = models.CharField(max_length=255)
mail = models.CharField(max_length=255)
datetime = models.DateTimeField(blank=True, null=True, default="")
licenses = models.CharField(max_length=10000, blank=True, null=True, default="")
view
:
def home(request):
...
return render_to_response("inventory/home.html", {'machines': Machine.objects.all()})
这是我HTML
的一部分:
<fieldset class="module aligned ">
<div class="form-row field-name">
<div>
<label class="required" for="id_name">License:</label>
<input class="vTextField" id="id_license" maxlength="255" name="license" type="text" value="">
</div>
</div>
</fieldset>
<div class=results>
<table width="100%" border="1" cellpadding="4" cellspacing="0" bordercolor="#eeeeee">
<tr bgcolor='WhiteSmoke' style="color: 'black'">
<td><input type="checkbox" id="action-toggle" style="display: inline-block;"></td>
<td>Name</td>
<td>User</td>
<td>Mail</td>
<td>Registration date</td>
<td>Registered licenses</td>
</tr>
{% for machine in machines %}
{% if machine.datetime %}
<tr bgcolor='CCFF66'>
{% else %}
<tr bgcolor='FF6666'>
{% endif %}
<td class="action-checkbox">
<input class="action-select" name="_selected_action" type="checkbox" value="{{machine.name}}">
</td>
<td>{{ machine.name }}</td>
<td>{{ machine.user }}</td>
<td>{{ machine.mail }}</td>
<td>{{ machine.datetime|default:"N/A" }}</td>
<td>{{ machine.licenses|default:"N/A"|truncatewords:"5" }}</td>
</tr>
{% endfor %}
</table>
</div>
结果如下:
如上所示,目前正在显示所有项目(称为计算机),但我想仅显示具有特定许可文本的计算机。
所以用户用户开始输入“许可证搜索字段”时,只会显示带有该许可证的项目(我希望我能够很好地解释这个问题)。
此时我真的不知道从哪里开始寻找!我检查了一些django教程,但他们没有进入的东西也许这个先进!
答案 0 :(得分:1)
您可以在服务器端执行搜索,按照以下步骤进行操作
License
搜索框放入HTML表单,然后在其旁边添加一个提交按钮。HTML的第一部分将更改为 -
<fieldset class="module aligned ">
<div class="form-row field-name">
<div>
<form method="post">
<label class="required" for="id_name">License:</label>
<input class="vTextField" id="id_license" maxlength="255" name="license" type="text" value="">
<button type="submit">Search</button>
</form>
</div>
</div>
</fieldset>
视图看起来像这样 -
def home(request):
...
if request.POST:
license_text = request.POST.get('license', '')
machines = Machine.objects.filter(licenses__istartswith=license_text) #or you can use __in operator
else:
machines: Machine.objects.all()
return render_to_response("inventory/home.html", {'machines': machines})
无需其他更改。代码未经测试但应该可以使用