django 如何查询manytomany的结果

django 如何查询manytomany的结果

原文:http://szxatjp.blog.163.com/blog/static/1013925392011210492531/

models定义如下:
class Node(models.Model):
hostname = models.CharField(max_length=255)
ipaddr = models.IPAddressField()
status = models.CharField(max_length=255, default=”off”)
def __str__(self):
return self.hostname
class Resource(models.Model):
installdate = models.DateTimeField(‘注册时间’, auto_now_add=True)
name = models.CharField(max_length=255)
type = models.CharField(max_length=255)
description = models.CharField(max_length=255)
status = models.CharField(max_length=255)
Caption = models.CharField(max_length=25500)
def __str__(self):
return self.name
class Hanode(models.Model):
node = models.OneToOneField(Node)
resource = models.ManyToManyField(Resource)
def __unicode__(self):
return self.node.hostname;
通过hanode = Hanode.objects.all(),然后模板中:
{% for ha_node in hanode %}
<a href=”#”>节点名:{{ ha_node.node.hostname }}</a>
<a href=”#”>IP地址:{{ ha_node.node.ipaddr }}</a>
<a href=”#”>节点状态:{{ ha_node.node.status }}</a>
{% endfor %}
可以获得相关的信息,但是{{ ha_node.resource.name }} 和{{ ha_node.resource.status}}无法获取相关信息,多对多该如何查询?
困扰很久了,google了很久也未能理解,请各位大大帮帮忙 =。=

 

多对多关系返回的应该是一个结果集,不是单个对象,所以你上面的代码不对。 至少也要是一个循环。是不是你应该使用多对一的关系?

 

感谢limodou !搞定了!
{% for re in ha_node.resource.all %}
{{ re.name}}<br>
{{ re.status }}<br>
{% endfor %}
即可!

发表评论

电子邮件地址不会被公开。 必填项已用*标注