如何在Django中返回与ForeignKey相关的多个对象 [英] How to return multiple objects related with ForeignKey in Django
问题描述
class HostData(models.Model):
经理= models.ForeignKey(Managers)
Host = models.CharField(max_length = 50,null = True)
HostStatus = models.CharField(max_length = 200,null = True)
Cpu = .PositiveIntegerField(max_length = 10,null = True)
Disk = models.FloatField(null = True)
我想返回与某个经理相关的对象的查询。问题是用户可以根据需要添加/删除许多管理员。所以我最初的想法是在我的views.py中这样做:
def get_data(request):
对于Managers.objects.all()中的服务器:
host_data = HostData.objects.filter(Manager = server)
#此后丢失:(
return render_to_response('mypage.html' {'first_set':host_data1,'second_set':host_data2})
那么,如何返回多个对象?如果用户添加另一个管理器,我将在我的views.py中获得第三个集合。
你可以查询相关对象,如下所示:
manager = Managers.objects.get(pk = 1)#识别你想要的经理
manager.hostdata_set.all( )#检索所有相关的HostData对象
在你的模板中,你也可以访问 hostdata_set
direc tly:
{%for manager%manager $}
{%for manager.hostdata_set.all%}
使用{{data}}
{%endfor%}执行某些操作
{%endfor%}
我相信这是你要求的。
顺便提一句,如果您的 Managers
模型存储有关单个经理的数据,您可能会发现更改有用它的名字是单数经理
。
I have the following in my models.py:
class HostData(models.Model):
Manager = models.ForeignKey(Managers)
Host = models.CharField(max_length=50, null=True)
HostStatus = models.CharField(max_length=200, null=True)
Cpu = models.PositiveIntegerField(max_length=10, null=True)
Disk = models.FloatField(null=True)
I would like to return the query for objects related to a certain "Manager". The problem is that the user may add/delete as many managers as he wants. So my initial thought was to have in my views.py something like this:
def get_data(request):
for server in Managers.objects.all():
host_data = HostData.objects.filter(Manager=server)
# Lost after this :(
return render_to_response('mypage.html', {'first_set': host_data1, 'second_set': host_data2})
So, how can I return multiple objects? Like if the user adds another "Manager" I'll get a third set in my views.py.
You can query on related objects like so:
manager = Managers.objects.get(pk=1) # identify which manager you want
manager.hostdata_set.all() # retrieve all related HostData objects
In your template, you can also just access the hostdata_set
directly:
{% for manager in managers %}
{% for data in manager.hostdata_set.all %}
do something with {{ data }}
{% endfor %}
{% endfor %}
I believe this is what you're asking for.
Incidentally, if your Managers
model stores data about a single "Manager", you may find it useful to change it's name to the singular Manager
.
这篇关于如何在Django中返回与ForeignKey相关的多个对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!