Python 如何获取django多对多关系中的相关项
在列表l中,我需要与特定员工关联的部门列表,但它抛出 “用户”对象没有属性“部门”Python 如何获取django多对多关系中的相关项,python,python-3.x,django,django-models,django-rest-framework,Python,Python 3.x,Django,Django Models,Django Rest Framework,在列表l中,我需要与特定员工关联的部门列表,但它抛出 “用户”对象没有属性“部门” class Dep(models.Model): department = models.CharField(max_length=255, blank=True, null=True) class EMP(models.Model): id = ShortUUIDField(primary_key=True, editable=False)
class Dep(models.Model):
department = models.CharField(max_length=255, blank=True, null=True)
class EMP(models.Model):
id = ShortUUIDField(primary_key=True, editable=False)
email = models.EmailField(verbose_name="email address", max_length=255, unique=True)
phone = models.CharField(max_length=50, null=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
dep = models.ManyToManyField(Dep)
views.py
l=[]
users=EMP.objects.filter(some filter condition)
for d in users:
l.append(d.dep__department)
d、 dep应该是department类的直接实例,这样您就可以通过d.dep.department直接获得部门名称 编辑: 您可以使用
d.dep.all()
因此,您的代码变成:
l=[]
users=EMP.objects.filter(some filter condition)
for d in users:
for dep in d.dep.all():
l.append(dep.department)
只需使用
d.dep.all()
即可获取用户中的所有dep。您没有提供用户模型,因此我猜它没有dep属性作为错误suggests@Someprogammer对不起,我的错误是EMP.objects.filter(某些过滤条件),但错误仍然存在。如果您的问题得到解决,请接受答案,现在它抛出“ManyRelatedManager'object has no attribute department”是的,很抱歉d.dep是department实例的查询集,您可以使用d.dep.all()对它们进行迭代。然后,对于那些实例,您可以获得它们的属性,例如department.d.dep不可编辑,您可能指的是d.dep.all()中的dep类似的内容:是的,我编辑了我的答案以反映这一点。尝试过,现在它抛出“ManyRelatedManager'object has no attribute department”我编辑了我的评论,这就是你想要的吗?我错过了dep是一个很多人,d.dep是一个经理,所以你应该使用all()或filter()来获得你要找的部门