0

私はdjango 1.9を使用しています。 私は、次のDjangoのモデルがあります:私は、すべてのモデルはプロジェクトオブジェクトモデルは、モデルに関連するイメージをオブジェクト結果Projects.objects.all().select_related('images_projects') を投影し、私は唯一のモデルオブジェクトを取得する取得しようとしているdjangoモデルですべての関連オブジェクトを取得する方法ForeignKeyとOneToOneField

@python_2_unicode_compatible 
class Projects(models.Model): 
    index = models.IntegerField(blank=True,default=1) 
    year = models.CharField(max_length=255, blank=True) 
    title = models.CharField(max_length=255, blank=True) 
    description = models.TextField(blank=True) 

    def __str__(self): 
     return '%s, %s, %s, %s' %(self.index,self.year,self.title, 
       self.description) 
@python_2_unicode_compatible 
class Awards(models.Model): 
    title = models.CharField(max_length=255, blank=True) 

    def __str__(self): 
     return '%s' %(self.title) 


@python_2_unicode_compatible 
class Images(models.Model): 
    projects = models.ForeignKey(Projects,null=True,blank=True, related_name='images_projects') 
    awards = models.OneToOneField(Awards,null=True,blank=True,related_name='images_awards') 
    title = models.CharField(max_length=255, blank=True) 
    file = models.ImageField(upload_to='upload_images/') 
    uploaded_at = models.DateTimeField(auto_now_add=True) 

    def __str__(self): 
     return '%s, %s' %(self.file, self.pk) 

1)プロジェクト。

2)モデルアワードのすべてのオブジェクトと関連するフィールドをイメージから取得したい。

Awards.objects.all().prefetch_related('images_awards') 

これにより、賞モデルのすべてのフィールドのみが受信されます。

私の2つのケースで、メインモデルのすべてのオブジェクトと共に関連フィールドを取得するにはどうすればよいですか?

答えて

2

select_relatedprefetch_related現在の検索ための関連オブジェクトを取得パフォーマンスブースターです。クエリは、ルックアップのために(主に)対応するオブジェクトを返します。そして、関連するオブジェクトが並んでフェッチされます。

Pythonの関連オブジェクトにアクセスするには、引き続き通常の構文を使用する必要があります。

for p in Projects.objects.all().select_related('images_projects'): 
    print(p.images_projects) 

んが、データベースの旅行は、それがすでにprojectと一緒にフェッチされて以来p.images_projectsにアクセスするために行われません。

+0

ありがとうございます!あなたは本当に助けてくれました! – voice

関連する問題