私はDjangoモデルに言ってもらいます、
class Student(models.Model):
prefix = models.CharField(max_length = 10, blank = True, null = True,)
suffix = models.CharField(max_length = 10, blank = True, null = True,)
fullname = models.CharField(max_length = 100, null = False,)
fname = models.CharField(max_length = 100, verbose_name = u'First Name', blank = True, null = True,)
midname = models.CharField(max_length = 100, verbose_name = u'Middle Name', blank = True, null = True,)
lname = models.CharField(max_length = 50, verbose_name = u'Last Name', default = ' ')
department = models.ForeignKey('Department')
リスト表示(admin.py)
list_display = ('fname', 'midname', 'lname', 'prefix', 'suffix',)
このためには、上記のフィールドを含む単純なselectクエリで十分ですが、Djangoは、FKがある場合、内部結合を使用して複雑な方法でSQLクエリを作成します。例えば、
通常、djangoは実装する必要があります
SELECT 'fname', 'midname', 'lname', 'prefix', 'suffix' FROM student LIMIT 0,100;
ただし、Djangoはすべての可能なフィールドに対してSELECTクエリを実行します。
SELECT student.prefix.student.suffix .... deparment.id ,depatment.name .....
INNER JOIN department ON deparment.id = student.id ........ LIMIT 100
不必要なクエリが必要な理由について誰かが合理的な説明をすることができますか?