2012-08-23 45 views
1

我仍然得到Django的掛鉤。例如,您有兩個模型,其中一個使用ForeignKey與另一個模型相關。從Django中使用ForeignKey獲取來自相關模型的信息

class Parent(models.Model): 
    name = models.CharField(max_length=255) 
    birthday= models.DateField(blank=True,null=True) 

class Child(models.Model): 
    name = models.CharField(max_length=255) 
    parent= models.ForeignKey(Parent) 

在上面的例子中,我想訪問特定的孩子,並得到他的名字。我希望通過父實例來完成。例如,我有一個名爲約翰的父母,我想知道他的孩子的名字。我該怎麼做?

請原諒我,如果這是一個簡單的問題...

回答

4

下面的代碼解決你的問題。請注意,child_set是相關經理的默認名稱。欲瞭解更多信息,請參閱https://docs.djangoproject.com/en/dev/ref/models/relations/

john = Parent.objects.get(name='John') 
johns_children = john.child_set.all() 
# Print names of his children 
for child in johns_children: 
    print child.name 
# Get child named Jack 
jack = john.child_set.get(name='jack') 
# Filter children by gender 
jack = john.child_set.filter(gender='F') 
... 
+0

讓採取的情況下,有一個孩子,而不是很多,然後我可以訪問它john.child.name ...我是對的嗎? – lakesh

+0

你可以用相關的名字來解決答案嗎? – lakesh

+0

您可以使用(相關名稱)來解決答案嗎?像parent = models.ForeignKey(Parent,related_name = child)..然後通過鍵入john.child.name訪問孩子的名字?它是否正確? – lakesh

1

鑑於父對象parent = Parent.objects.get(name='John'),您可以通過使用children = Child.objects.filter(parent=parent_id)得到他的孩子,那麼它在任何返回的對象的調用.name的問題:

for child in children: 
    print child.name 
相關問題