在Django中的select_related中创建关系的别名

时间:2014-08-06 13:18:40

标签: django alias relation django-select-related

我有模特:

Rubric(models.Model):
    name  = models.CharField(max_length=255)

Rubric有seo参数

class RubricSeo(models.Model):
    rubric = models.OneToOneField(Rubric)
    title  = models.CharField(max_length=255)

要选择我必须使用的标题:

rubric = Rubric.objects.select_related('rubricseo',).get(id=rubric_id)

然后在模板中使用:

{{ rubric.rubricseo.title}}

但我需要为此关系创建别名rubricseo(我的意思是LEFT JOIN rubricseo as seo...),然后使用{{ rubric.seo.title}}。但我不能将模型重命名为简单的Seo

有可能吗? select_related允许吗?

2 个答案:

答案 0 :(得分:1)

声明这样的关系:

rubric = models.OneToOneField(Rubric, related_name='seo')

然后您可以通过以下方式访问相关模型:

{{ rubric.seo.title}}

答案 1 :(得分:1)

您可以在模型的定义中使用related_name

class RubricSeo(models.Model):
    rubric = models.OneToOneField(Rubric, related_name='seo')
    title  = models.CharField(max_length=255)

您仍然需要使用select_related

rubric = Rubric.objects.select_related('seo').get(id=rubric_id)