簡體   English   中英

如何在Django模型ForeignKey和OneToOneField中獲取所有相關對象

[英]How to get all related objects in django model ForeignKey and OneToOneField

我正在使用django 1.9。 我有以下Django模型:

@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)我試圖獲取所有模型對象Projects和模型對象與模型Projects Projects.objects.all().select_related('images_projects')的圖像結果是,我僅獲得模型對象Projects。

2)我想獲得模型獎項的所有對象以及圖像中的相關字段。

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

結果,我只收到獎勵模型的所有字段。

在我的2種情況下,如何獲取相關字段以及主模型的所有對象?

select_relatedprefetch_related性能提升器 ,可檢索當前查詢的相關對象。 該查詢返回(主要)用於查找的相應對象,然后與之並排提取相關對象;

您仍然需要使用常規語法來訪問Python中的相關對象。

例如

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

由於p.images_projects已隨project一起獲取,因此不會進行任何數據庫訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM