Python Django如何基于ManyToManyField进行过滤?
假设我有以下Django类: 在myclassa.py中: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.
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
中,请使用适合您需求的任何内容。事实上,第一种方法是实现它的首选方法。