0
models.py如何加入查询3个表和Django
class Employee(models.Model):
emp_no = models.IntegerField(primary_key=True)
first_name = ...
last_name = ...
# emp_no first_name last_name
------ ---------- ----------
10005 Christian Erde
class DeptEmp(models.Model):
emp_no = models.ForeignKey(Employee, on_delete=models.CASCADE)
dept_no = models.ForeignKey(Department, on_delete=models.CASCADE)
# dept_no_id emp_no_id
---------- ----------
d003 10005
class Department(models.Model):
dept_no = models.CharField(primary_key=True, max_length=4)
dept_name = models.CharField(unique=True, max_length=40)
# dept_no dept_name
---------- ---------------
d003 Human Resources
views.py
class EmpList(ListView):
queryset = Employee.objects.all().select_related('deptemp').select_related('department')
employee_list.html
{% for emp in object_list %}
{{ emp.first_name }}
{{ emp.last_name }}
{{ emp.department.dept_name }}
{% endfor %}
我得到这个错误信息的浏览器:在select_related中给出的无效字段名 :'deptemp','department'。选择是:(无)
什么是员工?以及模板中的部门是什么? – karthikr
我想你正在寻找一个ManyToManyField(https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField)。这会在db上创建一个类似于DeptEmp模型的中间表。 –
@karthikr,谢谢你指出。我纠正了它。请看我编辑的模板文件。 –