Отображение данных таблицы с иностранными ключами в Django?

Я начинающий Django и я имел дело с той же проблемой, что и в :(Как отобразить данные таблицы Foreignkey в Django? ) но решение моей проблемы было довольно простым, что заставило меня задаться вопросом КАК? И даже после того, как я избавился от проблемы, у меня есть запрос .

Мои модели были:

 class Customer(models.Model):
    name = models.CharField(max_length=64, unique=False)
    cust_id = models.CharField(max_length=10, unique=True)


class Employee(models.Model):
    name = models.CharField(max_length=64, unique=False)
    salary = models.BigIntegerField()
    emp_id = models.CharField(max_length=10, unique=True)


class Order(models.Model):
    order_id = models.CharField(max_length=64, unique=True)
    assigned_to = models.ForeignKey(to=Employee, on_delete=models.CASCADE)
    given_by = models.ForeignKey(to=Customer, on_delete=models.CASCADE)
    bill = models.IntegerField(null=False)

Как вы можете видеть, моя модель заказа содержит " assigned_to ", поэтому в шаблоне HTML я написал это как :

{% for x in my_orders %}
<tr>
<td>{{ x.assigned_to }}</td>
</tr>
{% endfor %}

и все, что я получал пустое место Я пошел в shell и получил queryset, который показал это как "assigned_to_id" вместо "assigned_to". и затем изменил в HTML как :

{% for x in my_orders %}
    <tr>
    <td>{{ x.assigned_to_id}}</td>
    </tr>
{% endfor %}

работал для меня. Почему?

Потому что вы не установили возврат для модели Employee Model.

Вы можете сделать что-то подобное с моделью Employee.

class Employee(models.Model):
    name = models.CharField(max_length=64, unique=False)
    salary = models.BigIntegerField()
    emp_id = models.CharField(max_length=10, unique=True)
    
    def __str__(self):
       return f"self.name"

Тогда в вашем шаблоне вы получите это имя. Если вы хотите получить доступ к любому другому полю, то вам нужно использовать _, как вы использовали после имени поля

   assigned_to_id
   assigned_to_name
   assigned_to_salary
   assigned_to_emp_id
Вернуться на верх