Django - Получить все столбцы из обеих таблиц
models.py
from django.db import models
class DepartmentModel(models.Model):
DeptID = models.AutoField(primary_key=True)
DeptName = models.CharField(max_length=100)
def __str__(self):
return self.DeptName
class Meta:
verbose_name = 'Department Table'
class EmployeeModel(models.Model):
Level_Types = (
('A', 'a'),
('B', 'b'),
('C', 'c'),
)
EmpID = models.AutoField(primary_key=True)
EmpName = models.CharField(max_length=100)
Email = models.CharField(max_length=100,null=True)
EmpLevel = models.CharField(max_length=20, default="A", choices=Level_Types)
EmpPosition = models.ForeignKey(DepartmentModel, null=True, on_delete=models.SET_NULL)
class Meta:
verbose_name = 'EmployeeTable' # Easy readable tablename - verbose_name
def __str__(self):
return self.EmpName
Это мой файл models.py
У меня есть 2 таблицы и я хочу объединить их обе. также мне нужны все столбцы из обеих таблиц.
emp_obj = EmployeeModel.objects.select_related('EmpPosition'). \
only('EmpID', 'EmpName', 'Email','EmpLevel', 'DeptName')
Я пытался сделать это, но возникает ошибка EmployeeModel has no field named 'DeptName'
Как я могу получить все эти столбцы?
Если вам нужны все столбцы из обеих таблиц, то предложение only
вообще не нужно. Этого достаточно:
emp_obj = EmployeeModel.objects.select_related('EmpPosition')
Если вам необходимо обратиться к полю DeptName
сотрудника, вы можете следовать за отношением внешнего ключа, используя двойное подчеркивание: EmpPosition__DeptName