2017-08-04 28 views
2

私はPersonScoreを使用してこれらの3つのテーブルに対して内部結合を実行しようとしていますが、persontypeは見つかりません。何が間違っているのですか?prefetch_related()への無効なパラメータ

モデル:

class PersonScore(models.Model): 
    id = models.IntegerField(primary_key=True) # AutoField? 
    person = models.ForeignKey(‘Person’) 

class Person(models.Model): 
    id = models.IntegerField(primary_key=True) # AutoField? 
    name = models.CharField(max_length=255) 

class PersonType(models.Model): 
    person = models.ForeignKey(‘Person’) 
    type = models.CharField(max_length=255) 

コード:

PersonScore.objects.filter(person__name="Bob").prefetch_related("person__persontype") 

エラー:

Cannot find 'persontype' on Person object, 'person__persontype' is an invalid parameter to prefetch_related() 

コード:

PersonScore.objects.filter(person__name="Bob").prefetch_related("person__persontype_set") 

エラー:PersonScoreで

KeyError: (1L,) 
+0

まだ問題はありますか?または解決? –

答えて

2

あなたが使用することをおprefetch_relatedを使用したい場合、あなたはあなたができる人

Person.objects.filter(personscore_set__name="Bob").prefetch_related("personscore_set" 

でそれを使用するselect_related代わりの

PersonScore.objects.filter(person__name="Bob").select_related("person__persontype") 

をprefetch_related必要があります詳細はこちら:What's the difference between select_related and prefetch_related in Django ORM?

私はホあなたのために役立つでしょう。

関連する問題