0
は、次のモデルを考えて複数のモデルからのクエリに参加:Djangoは
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)
がなければならないように見えますが、アプリケーションを再設計することは最後である - 我々はすでにデータがたくさんあります。
申し訳ありませんが、私はこの 'select_related'部分を理解できません。正しい方向に私を向けることができますか? – MoonWolf
@MoonWolf - ['select_related'](https://docs.djangoproject.com/ja/1.10/ref/models/querysets/#select-related)(別名prefetch_relatedも参照してください)、追加のクエリを実行する必要はありません関連するモデルを取得する – Sayse