如何在Django模板中显示ForeignKey中的许多字段值?
我查看了QuestSetAPI并试图找到答案。但我想我误解了经理和实例之间的区别 我有以下型号如何在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
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。如果你有任何具体的疑问,你应该提出一个新问题。好的,我会问的。。谢谢