Django 中 Html 表单的数据查询问题

2015-09-22 10:14:46 +08:00
 CBBing
我在 Django 新建两个 model,一个 class Account ,一个是 class Person,并且 person = models.
models.OneToOneField(Account),那我在 html 表单里在知道 account 的情况下怎么调用 Person 里的域?
2012 次点击
所在节点    Python
7 条回复
lrqrun
2015-09-22 12:02:33 +08:00
CBBing
2015-09-22 12:23:12 +08:00
@lrqrun 你好,一对一关系也可以用_set 吗?在 html 表单里使用确实不报错,但是我想要的也没有出来
CBBing
2015-09-22 12:24:48 +08:00
@lrqrun <h1>{{ account.account_text }}</h1>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>
{% endif %}
<form action="{% url 'manager:focus' account.id %}" method="post">
{% csrf_token %}
{# 所有针对内部 URL 的 POST 表单都应该使用{% csrf_token %}模板标签#}
<ul>
<input name="focus" value="{{ account.id }}" />
{% for detailInfo in account.person_set.all %}
<li>{{ detailInfo.address_text }}</li>
<li>{{ detailInfo.email_text }}</li>
<li>{{ detailInfo.tel_number }}</li>
<li>{{ detailInfo.name_text }}</li>
<li>{{ detailInfo.focus_number }}</li>
<li>{{ detailInfo.visit_number }}</li>
{% endfor %}
</ul>
<input type="submit" value="关注他" />
</form>
chenlongwen
2015-09-22 12:55:33 +08:00
<input name="focus" value="{{ account.id }}" />
<li>{{ account.person.address_text }}</li>
...
</ul>
CBBing
2015-09-22 18:44:05 +08:00
@chenlongwen 多谢指教,还有一个问题

<form action="{% url 'manager:focus' account.id %}" method="post">
{% csrf_token %}
<ul>
<input name="focus" value="{{ account.id }}" />
...
</ul>
<input type="submit" value="关注他" />
</form>
这个表单怎么接收它传入的数据

我写的
def focus(request,account_id):
p = get_object_or_404(Accounts, pk=account_id)
try:
focus = p.person.get(pk=request.POST['focus'])#这行报错
except (KeyError, Person.DoesNotExist):
return render(request, 'manager/detailInfo.html', {
'question': p,
'error_message': "逻辑错误!!!",
})
else:
p.person.focus_number += 1
p.person.save()
return HttpResponseRedirect(reverse('manager:detailInfo', args=(p.id,)))
提示不能接收
chenlongwen
2015-09-22 20:17:25 +08:00
@CBBing 这个视图的作用是?
CBBing
2015-09-24 17:19:06 +08:00
@chenlongwen 不好意思这两天太忙,这个视图就是在点“关注他”后传入这个账户的 account.id 之后就可以根据这个 id 来找到 account,再根据一对一找到 person , person 有一个域是记录关注人数的 focus_number ,使它加一。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/222675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX