Django查询多对一关系,如何检索多对一数据关系



如何检索数据多对一关系。

class Ads(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=75)
class Aimage(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
ads = models.ForeignKey(Ads, on_delete=models.CASCADE, related_name='ads_image')
image = models.ImageField(blank=True)

我的观点:

qs = Ads.objects.all()

模板:

{% for o in qs.aimage_set.all %}
{{ o.title }} 
{{ o.image.url }} #does work
{% endfor %}

qsAds集合,因此您不能在查询集上访问qs.aimage_set,而是在Ads模型上访问。此外,您为related_name=…参数[Django-doc]、related_name='ads_image'指定了值,因此这是反向访问对象的管理器的名称:

{% for ad in qs %}
<b>{{ o.title }}</b>
{% for o inad.ads_image.all %}
{{ o.image.url }}
{% endfor %}
{% endfor %}

这将导致N+1问题。您可以使用.prefetch_related(…)[Django-doc]在bulk:中获取相关的Aimage对象

qs = Ads.objects.prefetch_related('ads_image')

相关内容

  • 没有找到相关文章

最新更新