Отображение данных таблицы с иностранными ключами в 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