Django: Как я могу присоединиться к QuerySets из разных моделей, которые связаны с ForeignKey?

Я хочу объединить атрибуты из двух разных моделей, которые связаны с ForeignKey, в одном QuerySet, чтобы отобразить их вместе в таблице. Я попытался соединить их с помощью select_related, однако атрибут из модели B не отображается в моем QuerySet, и при этом я не могу отобразить его в своей таблице. Что я делаю неправильно? Как я могу добавить атрибут "имя" в мой QuerySet из модели A? Не могли бы вы мне помочь? заранее спасибо

view.py

A.objects.select_related('b_id').filter(a_id__in='abcde')

models.py

class B(models.Model):        
    b_id = models.CharField(max_length=20, primary_key=True, unique=True)
    name = models.CharField(max_length=80)
    size = models.CharField(max_length=10)

class A(models.Model):
    a_id = models.CharField(max_length=20, primary_key=True, unique=True)
    text = models.CharField(max_length=254)
    b_id = models.ForeignKey(B)

.html

{% for entry in set %}
 <tr> <td> {{entry.a_id}} </td>
      <td> {{entry.text}} </td>
      <td> {{entry.name}} </td></tr>

2 ответа

select_related() не объединяет поля из двух моделей. Вы должны использовать этот код, чтобы показать name свойство внешнего ключа b_id:

{{entry.b_id.name}}

Насколько я понимаю, вам нужно отобразить экземпляры модели B, которые связаны с классом A через внешний ключ.

Ваши views.py:

    A.objects.filter(a_id__in='abcde')

Ваш HTML:

    {% for entry in set %}
        <tr> <td> {{entry.a_id}} </td>
        <td> {{entry.b_id.text}} </td>
        <td> {{entry.b_id.name}} </td></tr>
Другие вопросы по тегам