在Django中显示Foreignkey表数据



我是Django的初学者,我正在处理与中相同的问题:(如何在Django中显示Foreignkey表数据?(但我的解决方案很简单,这让我想知道怎么做?即使在我解决了这个问题之后,我也有一个疑问。

我的型号是:

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并得到查询集,它显示为";assigned_to_ id";而不是";assigned_to";。然后在HTML中更改为:

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

为我工作。为什么

因为您没有为Employee Model设置返回值。

你可以对你的员工模型做类似的事情。

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

最新更新