如何查询员工获取与员工相关的所有地址,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()
答案 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支持许多关系并缓存查询集并减少数据库命中,从而提高性能。