我在一个维护项目,其中有一个模型说,与定制模型经理业务。这个定制模型管理器为在业务模型上执行的所有查询添加了一些额外的过滤器。这种商业模式有许多领域可以自称为培训师。到目前为止还不错,当我尝试获取与业务相关的所有培训师而不应用那些过滤器时,问题就出现了。你知道吗
商业模式如下:
class Business(Basetable):
#status P=publish H=inactive D=draft N=new
name = models.CharField(max_length=120)
slug = models.SlugField(max_length=150)
logo=models.OneToOneField("BusinessLogo",null=True,on_delete=models.SET_NULL)
categories = models.ManyToManyField("BusinessCategory",related_name='allcategories',null=True)
price_type = models.CharField(max_length=2,
choices=PRICE_CHOICES,
default=YEARLY, null=True, blank=True)
achievements = models.TextField(null=True, blank=True)
years_of_experience = models.FloatField(null=True, blank=True)
trainers = models.ManyToManyField("self",related_name='btrainers',null=True, blank=True, symmetrical=False)
expense=models.IntegerField(null=True,blank=True)
objects= CityManager()
def get_trainers(self):
return self.trainers.all()
get_trainers
是返回与业务相关的所有培训师的函数,但是我希望结果绕过CityManager
并使用默认管理器。你知道吗
任何提示都将不胜感激。你知道吗
更新:
使用use_for_related_fields = False
不起作用。我在这里找到了一个相关的bug。附近有工作吗?我知道重写默认值objects
不是一个好的实践,但是这是我所得到的。你知道吗
一般来说,最好在默认的
Manager
中avoid filtering results:但是如果由于向后兼容的原因不能更改默认值
Manager
,那么仍然可以显式地创建一个普通的Manager
并使用它获得结果。你知道吗现在您有了一个普通的
Manager
,可以使用它显式地访问所需的对象:相关问题 更多 >
编程相关推荐