Как получить доступ к элементу модели после объединения в Django?

Мой пост похож на этот, только я не могу получить доступ к элементу : Stackoverflow : Как сделать внутреннее соединение в django?

Я хочу отобразить в Html номер локомотива и имя клиента, который владеет этим локомотивом. Но они находятся в разных таблицах.

Вот мой models.py

class Client(models.Model):
    client_name = models.CharField(max_length=100, null=False, unique=True)

    def __str__(self):
        return self.client_name


class Locomotive(models.Model):
    locomotive_number_id = models.CharField(max_length=50, null=False, unique=True)
    locomotive_asset_id = models.CharField(max_length=50, null=False, unique=True)
    locomotive_client = models.ForeignKey(Client, null=False, on_delete=models.CASCADE)

    def __str__(self):
        return self.locomotive_number_id

Вот мой views.py

def settings(request):

    my_clients = Client.objects.values_list('client_name', flat=True)
    my_locomotives = Locomotive.objects.select_related('locomotive_client')
    return render(request, 'home/settings.html', context={"my_clients": my_clients,"my_locomotives": my_locomotives})

если я печатаю my_locomotives.query, то получаю следующее :

print(str(my_locomotives.query))
SELECT 
 "foo_bar_locomotive"."id",
 "foo_bar_locomotive"."locomotive_number_id",
 "foo_bar_locomotive"."locomotive_asset_id",
 "foo_bar_locomotive"."locomotive_client_id",
 "something1_something2_client"."id",
 "something1_something2_client"."client_name"
FROM "foo_bar_locomotive"
 INNER JOIN "something1_something2_client" ON ("foo_bar_locomotive"."locomotive_client_id" = "something1_something2_client"."id")

Вот html-код, который позволяет мне отображать список локомотивов. За исключением того, что я не могу отобразить имя клиента, которому принадлежит локомотив.

{% for elements in my_locomotives %}
    <option value="{{elements}}">{{elements}} - {{elements.client_name}}</option>
{% endfor %}

Как я могу сделать, чтобы отобразить это:

Locomotive N° 550XXXYY - CUSTXXXYY

Если я правильно понял, чего вы хотите добиться, то вам просто нужно сделать elements.locomotive_client.client_name в вашем шаблоне, чтобы получить имя клиента. Тогда у вас получится что-то вроде этого :

{% for elements in my_locomotives %}
    <option value="{{elements}}">Locomotive N°{{elements.locomotive_number_id}} - {{elements.locomotive_client.client_name}}</option>
{% endfor %}
Вернуться на верх