我对django很新,虽然我的热情仍然坚持下面:
我有模特
class Task(models.Model):
Taskdetails = models.CharField(max_length=500, null=True)
asset = models.ForeignKey('Asset', null=True)
def __str__(self):
return str(self.id)
我用ModelForm技术创建了几个对象
我想创建一个用户可以选择资产的模板,然后按按钮显示与此资产相关的所有任务。我提到资产有很多任务。我正在尝试使用Django ModelForm。
所以,我首先创建了表单
class HistoryForm(ModelForm):
class Meta:
model = Task
fields =('asset',)
然后我创建了视图"历史"用户可以选择感兴趣的资产:
def history(request):
if request.method == "POST":
hist_form = HistoryForm(request.POST)
if hist_form.is_valid():
hist = hist_form.save(commit=False)
hist.save()
return ('results')
else:
hist_form = HistoryForm()
return render(request, 'TaskTrace/history.html', {'hist_form': hist_form}
html标签(部分内容)如下所示
{{ hist_form }}
<p><a href="{% url 'results' %}"> <button type="submit" > Results</button></a></p>
然后我想做出用户做出的选择并将其转移到下一个视图(&#39;结果&#39;)
def results(request):
tasks = Task.objects.filter(asset=request.POST.get('asset', None))
return render(request, 'Tasktrace/results.html', {'tasks': tasks})
hmtl模板是
{% for task in tasks %}
<div>
<p><a href=""><u>{{ task }} </a></p>
</div>
{% endfor %}
问题在于我没有完成任何任务。我相信我的大问题是将值从第一个视图转移到另一个视图。
在ModelForms中进行过滤是否正确?我可能会错过这里的东西
我真的很感谢你的帮助
答案 0 :(得分:0)
你非常亲密。
在history.html
内写下这样的表格:
<form method="POST" action="{% url 'results' %}">{% csrf_token %}
{{ hist_form }}
<input type="submit" name="submit_results" value="Results" />
</form>
现在,上面的表单将提交到results
视图,您将获得任何POST
数据(正如您所做的那样,request.POST.get('asset', None)
)。