0

従業員に関連するすべての住所を取得するために従業員にクエリを実行する方法が Employee.Add.all() 機能しません。

 class Employee():
    Add = models.ManyToManyField(Address)
    parent = models.ManyToManyField(Parent, blank=True, null=True)

class Address(models.Model):
   address_emp = models.CharField(max_length=512)
   description = models.TextField()

   def __unicode__(self):
   return self.name()
4

3 に答える 3

5

従業員.objects.get(pk=1).Add.all()

どの従業員を意味するかを示す必要があります。pk=1明らかに例です(主キーが1に等しい従業員)。

ところで、フィールド名には小文字を使用するという強い慣習があります。Employee.objects.get(pk=1).addresses.all()はるかに良く見えるでしょう。

于 2010-04-09T10:43:31.573 に答える
2

Employee.Add.all()モデルから関連フィールドにアクセスしようとしているため、は機能しません。この種のクエリには、Ludwikの例のように、モデルのインスタンスが必要です。同じクエリでモデルとそれに関連する外部キーフィールドにアクセスするには、次のようにする必要があります。

Employee.objects.select_related('Add').all()

それでうまくいくでしょう。

于 2010-04-09T15:27:20.260 に答える
0

employee = Employee.objects.prefetch_related('Add') [emp.Add.all() for emp in employee]

prefetch_related は多くの関係をサポートし、クエリ セットをキャッシュしてデータベース ヒットを減らし、パフォーマンスを向上させます。

于 2016-05-20T11:07:57.277 に答える