Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取django多对多关系中的相关项_Python_Python 3.x_Django_Django Models_Django Rest Framework - Fatal编程技术网

Python 如何获取django多对多关系中的相关项

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)

在列表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)
        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()来获得你要找的部门