如何在Django模板中显示ForeignKey中的许多字段值?

如何在Django模板中显示ForeignKey中的许多字段值?,django,django-models,django-templates,django-orm,Django,Django Models,Django Templates,Django Orm,我查看了QuestSetAPI并试图找到答案。但我想我误解了经理和实例之间的区别 我有以下型号 class Target(model.Model): group = models.ManyToManyField(Group, null=True) group_name = models.ManyToManyField(GroupName, null=True) ... class Group(models.Model): value = models.CharField

我查看了QuestSetAPI并试图找到答案。但我想我误解了经理和实例之间的区别

我有以下型号

class Target(model.Model):
   group = models.ManyToManyField(Group, null=True)
   group_name = models.ManyToManyField(GroupName, null=True)
   ...

class Group(models.Model):
   value = models.CharField(null=True)
等等是为目标模型中的所有多个关系定义的

现在,我从另一个模型中引用了目标模型本身,如下所示

class Schedule(models.Model):
   targetID = models.ForeignKey(Target, null=True)
   name = models.CharField(null=True)
在我的时间表模型模板中,我希望能够显示ForeignKey中引用的ManyToManyFields的值(即目标)

当我写下以下内容时

o = Schedule.objects.get(name = 'O_123')
o.targetID --->  This gives me the ID of the ForeignKey field
o.targetID.group
我希望能够显示目标模型中所有字段的值,并参考名称(即O_123),为此我尝试了以下方法:

o = Schedule.objects.get(name = 'O_123')
o.targetID --->  This gives me the ID of the ForeignKey field
o.targetID.group
这将显示“位于0x1f2e850的django.db.models.fields.related.ManyRelatedManager对象”


有人能帮我理解我误解了什么吗。谢谢。

你有一些误解

o、 targetID-->这给了我ForeignKey字段的ID

否。
o.targetID
提供通过外键关联的实际目标对象。这就是为什么不应该调用字段anythingID:它应该被称为
target


现在,这是可能的,因为这是FK关系的多对一:即,对于每个计划,只有一个目标。但从目标群体到群体之间存在着多对多的关系。因此
o.targetID.group
引用了许多组(同样,命名约定也有帮助:您可能应该将此字段称为
groups

因此,Django给了您一个管理器对象:基本上,与执行
Schedule.objects时一样。与后一种情况一样,您可以执行
all()
以获取所有要迭代的元素,或者执行
get(criteria=value)
以获取特定的元素,甚至可以执行
filter(criteria=value)
以获取过滤后的查询集

在您的情况下,您可能需要:

for group in o.targetID.group.all():
    print group.my_field_value

o.targetID.group
提供一个查询集。您需要执行
o.targetID.group.all()
并在循环中遍历对象。谢谢你,丹尼尔。我知道我没有正确理解某些事情。你能告诉我如何处理下面的问题吗。我有一个表单,其中显示了我的模型中带有某个ID的复选框,在选择特定ID时,它会显示同一模型中字段的其余部分。我想我必须使用ajax,以便在同一页面上显示表。你有什么建议?是的,听起来你需要Ajax。如果你有任何具体的疑问,你应该提出一个新问题。好的,我会问的。。谢谢