我有2个型号:
class ModelA:
fieldA = models.ManyToManyField(ModelB, through="CustomThroughTable")
def foobar(self):
return self.fieldA.through.objects.filter(fieldA=self)
class ModelB:
whatever = models.CharField()
我想在ModelA
中实现一个函数,该函数会在直通表中打印出fieldA
的所有值。函数foobar
的当前实现完成了我现在所需要的,但我认为它效率很低。有一个更好的方法吗?感谢。
答案 0 :(得分:1)
我没有看到任何关于该查询的低效率,您必须更精确地调试您的问题。
也就是说,只需在直通表上使用相关名称,就可以更简单地(同样有效地)实现同样的目标。
class ModelA(models.Model):
fieldA = models.ManyToManyField(ModelB, through="CustomThroughTable")
class ModelB(models.Model):
whatever = models.CharField()
class CustomThroughTable(models.Model):
modela = models.ForeignKey(ModelA, related_name="foobar")
modelb = models.ForeignKey(ModelB)