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

Employee.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 supports many relationships and caches the query set and reduces the database hits hence increases the performance..

于 2016-05-20T11:07:57.277 回答