Django从另一个表中的模型输出1个字段

时间:2019-03-20 10:45:08

标签: django

我有2个模型-

class InsName(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=30, verbose_name = "Insurer/Broker")
    alias = models.TextField(max_length=80, blank=True)
    def __str__(self):
        return f'{self.name}, {self.alias}'
    def get_absolute_url(self):
        return reverse('insurer-detail', args=[str(self.id)])

class Development(models.Model):
    id = models.AutoField(primary_key=True)
    logno = models.CharField(validators=[RegexValidator(regex='^(SCTASK|CDLI)[0-9]{7}', message='Please enter a valid log number', code='nomatch')], max_length=13)
    insurer = models.ForeignKey(InsName, on_delete=models.SET_NULL, null=True, blank=False, verbose_name="Client")
    policy = models.ManyToManyField(Policy, blank=True)

在我的模板上,我正在输出“开发”列表,但是在输出保险人的地方,我只想输出 name 部分。我需要保留别名,因为在其他模板中也会使用该别名,该模板也会在 InsName 中调用。

我以为我可以在模板中的逗号方法之前使用子字符串,但是我看不到这样的东西存在。这可能吗?如果没有关于如何实现此目标的任何提示,将不胜感激!

1 个答案:

答案 0 :(得分:1)

也许您可以使用F来做到这一点(除了 @dirkgroten 的评论):

queryset = Development.objects.all().annotate(insurer_name=F('insurer__name'))

并在模板中使用它:

{% for item in queryset %}
  {{ item.insurer_name }}
{% endfor %}