我有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 中调用。
我以为我可以在模板中的逗号方法之前使用子字符串,但是我看不到这样的东西存在。这可能吗?如果没有关于如何实现此目标的任何提示,将不胜感激!
答案 0 :(得分:1)
也许您可以使用F来做到这一点(除了 @dirkgroten 的评论):
queryset = Development.objects.all().annotate(insurer_name=F('insurer__name'))
并在模板中使用它:
{% for item in queryset %}
{{ item.insurer_name }}
{% endfor %}