考虑以下模型:
class Employee(models.Model):
first_name = models.CharField(max_length=128)
last_name = models.CharField(max_length=128)
class MonthName(models.Model):
name = models.CharField(max_length=128)
class Month(models.Model):
name = models.ForeignKey(MonthName)
year = models.IntegerField()
class Group(models.Model):
name = models.CharField(max_length=128)
class EmployeeGroup(models.Model):
employee = models.ForeignKey(Employee)
month = models.ForeignKey(Month)
group = models.ForeignKey(Group)
class Status(models.Model):
name = models.CharField(max_length=128)
class EmployeeStatus(models.Model):
employee = models.ForeignKey(Employee)
month = models.ForeignKey(Month)
status = models.ForeignKey(Status)
我需要在指定的月份显示一些具有特定状态的员工。除了他们的名字,我需要显示他们所属的组名。我可以这样做:
statuses = models.EmployeeStatus.objects.filter(month=some_month, status__name="Current")
groups = models.EmployeeGroup.objects.filter(month=some_month)
但是要加入这些查询(假设进行一些排序),我将不得不迭代它们。我可以用其他方式实现吗?
看起来应该有型号
class EmployeeData():
employee = models.ForeignKey(Employee)
month = models.ForeignKey(Month)
group = models.ForeignKey(Group)
status = models.ForeignKey(Status)
但重新设计应用程序是最后的选择 - 我们已经拥有大量数据。
答案 0 :(得分:0)
我假设您可以从月份模型
开始收集所有这些信息statuses = some_month.employeestatus_set.filter(status__name='Current')
groups = some_month.employeegroup_set.all()
我想你可以使用select_related
作为查询的一部分,首先检索some_month
以获取状态'和群组