在我的HTML页面上,我有一个代理列表(代理是我的自定义用户模型)。在每个代理旁边都是“发送邀请”。按钮。要创建TeamInvitation
,我需要指定哪个代理附加到其receiver_agent
字段(带代理的OneToOneField)。
HTML页面上显示多个代理,它们按模板标记的顺序列出。我需要在pk
receiver_agent = Agent.objects.get(pk = ???)
之后输入一些内容,但我不知道要输入什么内容。
views.py
class InviteAgentSearchResults(ListView):
model = Agent
form_class = AgentSearchForm
template_name = 'invite_agent_search_results.html'
def get_queryset(self):
# ... Code to find correct agent
def post(self, request, *args, **kwargs):
invite = TeamInvitation.objects.create(receiver_agent = Agent.objects.get(pk = ???))
return HttpResponse('Invite successfully sent.')
HTML:
{% for agent in agent_list %}
<div class="agent">
# ... Some code here
<form method="post"> # The "Send Invite" button
{% csrf_token %}
<button class="button1"><span>Send Invite</span></button>
</form>
</div>
{% endfor %}
编辑:澄清 - 发件人只向一个代理发送邀请。有一个&#39;发送邀请&#39;每个代理旁边的按钮。邀请被接受后,会将代理添加到发件人的团队中。
我需要将{% for agent in agent_list %}
中的代理指定的单一代理传递到我的视图中,并将该代理分配给receiver_agent
字段。您会看到每个代理商都有一个按钮&#39;环;意味着页面上显示的每个代理都有一个发送邀请&#39;他们旁边的按钮。按下按钮只应向该特定代理发送邀请。
答案 0 :(得分:0)
此
receiver_agent = Agent.objects.get(pk = ???)
指定获取具有特定主键pk
在你的情况下,你希望得到很多。您可以使用过滤功能(如果您需要按某些参数进行过滤。或者您可以获取所有代理。下面的示例。
agents = Agent.objects.filter(age=25)
过滤,这将返回一个您可以在模板中迭代的Queryset。agents = Agent.objects.all()
这也会返回一个Queryset。有关此内容的更多信息:https://docs.djangoproject.com/en/1.11/topics/db/queries/#retrieving-all-objects
答案 1 :(得分:0)
您必须过滤要发送团队邀请的团队中的代理。如果您没有显示代理所在团队的字段,则无法对其进行过滤。
只创建一个团队邀请:
TeamInvitation.objects.create(team='someteam')
然后代理过滤器:
agent = Agent.objects.get(pk=somepk)
teaminv = TeamInvitation.objects.filter(team=agent.team)
通过这种方式,您可以在邀请时显示代理。
但我不知道您为何要为每个座席创建团队邀请。团队邀请只应创建一次,代理会检查他是否被邀请。通常情况下,您会邀请球队参赛,团队中的每个人都会收到邀请。我希望很清楚我的意思。
所以你应该考虑一下你的结构。