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>