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

Вернуться на верх