Как отобразить информацию, содержащуюся в поле связанной модели, в шаблоне Django

В моем приложении у меня есть следующие две модели:

class CondRecordHdr(models.Model):
    cond_prices_id = models.AutoField(primary_key=True, verbose_name='Cond ID')
    cond_type = models.ForeignKey(AlliedPriceCondType, ...
    material = models.ForeignKey(Material, ...

class Dependency(models.Model):
    cond_dependency = models.AutoField(primary_key=True, ...
    prc_cond_hdr = models.ForeignKey(CondRecordHdr, ...
    prc_select_obj = models.CharField(max_length=15, ...

Я помещаю объекты первой модели в listview с:

class CondRecListView(ListView):
    context_object_name = 'obj_context'
    model = CondRecordHdr 
    template_name = ...

    def get_queryset(self):
       return CondRecordHdr.objects.order_by(...

Затем я использую контекстный объект для отображения данных в табличной форме в шаблоне.

Я отображаю данные следующим образом:

Cond Type Material Dependency (Note1) Xyz More fields
TCHG Mouse blank abc1
IPRO Keyboard abc2

Примечание 1: В этой колонке я хочу отобразить значение field prc_select_obj model Dependency, где у меня нет данных, отображаемых в настоящее время (blank).

Как отобразить информацию, содержащуюся в модели Dependency в том же шаблоне (в колонке, показанной выше Note1)?

вы можете получить доступ к связанной модели Dependency из CondRecordHdr в шаблоне по имени, заданному в поле с параметром related_name:

prc_cond_hdr = models.ForeignKey(CondRecordHdr, related_name="dependencies",...)

# And in the template
{% for obj in obj_context %}
{% for dep in obj.dependencies.all %}
{{dep.prc_select_obj}}
{% endfor %}
{% endfor %}

Без установленного в поле related_name значения, по умолчанию related_name устанавливается MODENAME_set, в вашем случае: {% for dep in obj.dependency_set.all %}

Более подробно в официальной документации: https://docs.djangoproject.com/en/4.1/ref/models/fields/#django.db.models.ForeignKey.related_name

Вернуться на верх