在Django中查询

时间:2010-04-09 10:41:43

标签: python django django-models django-views

如何查询员工获取与员工相关的所有地址,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()

3 个答案:

答案 0 :(得分:5)

  

Employee.objects.get(PK = 1).Add.all()

您需要显示哪个员工。 pk=1显然是一个例子(主键等于1的员工)。

顺便说一句,对于字段名称使用小写字母有一个强烈的惯例。 Employee.objects.get(pk=1).addresses.all()会更好看。

答案 1 :(得分:2)

Employee.Add.all()不起作用,因为您试图从模型中访问相关字段,这种查询需要模型的实例,如Ludwik的示例。要在同一查询中访问模型及其相关的外键字段,您必须执行以下操作:

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

那就可以了。

答案 2 :(得分:0)

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

prefetch_related支持许多关系并缓存查询集并减少数据库命中,从而提高性能。