如何在Django中返回与ForeignKey相关的多个对象 [英] How to return multiple objects related with ForeignKey in Django

查看:136
本文介绍了如何在Django中返回与ForeignKey相关的多个对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的models.py中有以下内容:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆