Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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如何基于ManyToManyField进行过滤?_Python_Django_Django Models_Django Queryset - Fatal编程技术网

Python Django如何基于ManyToManyField进行过滤?

Python Django如何基于ManyToManyField进行过滤?,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,假设我有以下Django类: 在myclassa.py中: class MyClassA(models.Model): name = models.CharField(max_length=254) def my_method(self): # WHAT GOES HERE? 在myclassb.py中: from myclassa import MyClassA class MyClassB(models.Model): name = models.

假设我有以下Django类:

在myclassa.py中:

class MyClassA(models.Model):
    name = models.CharField(max_length=254)

    def my_method(self):
        # WHAT GOES HERE?
在myclassb.py中:

from myclassa import MyClassA
class MyClassB(models.Model):
    name = models.CharField(max_length=254)
    a = models.ManyToManyField(MyClassA, related_name="MyClassB_MyClassA")
现在假设我有一个
MyClassA
的实例
x
。 我应该在
my_method()
中输入什么,以便它返回其字段
a
中包含
x
MyClassB
的所有实例?

您可以将其定义为:

def my_method(self):
    return self.MyClassB_MyClassA.all()
def my_method(self):
    return MyClassB.objects.filter(a=self)
或者,您也可以将其定义为:

def my_method(self):
    return self.MyClassB_MyClassA.all()
def my_method(self):
    return MyClassB.objects.filter(a=self)

谢谢第一个会起作用。第二个不会,因为
MyClassB
没有导入到
myclassa.py
中,请使用适合您需求的任何内容。事实上,第一种方法是实现它的首选方法。