Вывод из связанных моделей Django
Есть несколько связанных моделей:
class regSurname(models.Model):
surname = models.CharField(max_length=500, verbose_name='Фамилия')
class regName(models.Model):
name = models.CharField(max_length=500, verbose_name='Имя')
surname_key = models.ForeignKey(regSurname, on_delete=models.CASCADE, related_name='regsurname', verbose_name='Имя')
class regPatronymic(models.Model):
patronymic = models.CharField(max_length=500, verbose_name='Отчество')
name_key = models.ForeignKey(regName, on_delete=models.CASCADE, related_name='patronymic', verbose_name='Отчество')
Вопрос, как получить в шаблоне связанные ФИО всех записей?
Ответы (1 шт):
Автор решения: Za Ars
→ Ссылка
Аннотации и функции F, Value, Concat из django.db.models вам в помощь
# views.py
qs = reSurname.objects.select_related('regsurname', 'regsurname__patronymic').annotate(full_name=Concat(F('surname'), Value(' '), F('regsurname__name'), Value(' '), F('regsurname__patronymic__patronymic')))
context = {'objects': qs}
# tempalate.html
{% for x in objects %}
{{ x.full_name }}
{% endfor %}
Для случаев, когда нет одной из связей, используйте Case и When из того же django.db.models