这个问题很简单,但我正在努力解决。你知道吗
我想为Django模型创建一个自定义对象管理器,如下所示:
class Clearance(models.Model):
user = models.OneToOneField(User, verbose_name='usuário')
level = models.CharField(choices=PERMISSION_LEVELS, max_length=20, verbose_name='nível')
tech_support = TechSupportManager()
user_manager = UserManagerManager()
好吧,问题是冗余管理器这个词。我不想去掉最后一个词,只留下“UserManager”,而不说这个类应该做什么,但是复制这个词感觉也是错误的。你知道吗
有没有更优雅的方法?你知道吗
默认情况下,Django向每个Django模型类添加一个名为objects的管理器。但是,如果要将对象用作字段名,或者要在管理器中使用对象以外的名称,则可以基于每个模型对其进行重命名。要重命名给定类的管理器,请定义类型为的类属性模特。经理()在那个模型上。例如:
使用这个示例模型,个人.对象将生成AttributeError异常,但是个人。个人。所有人()将提供所有Person对象的列表。你知道吗
You can find further information on managers, and the best practices using them at this link
好吧,
Manager
可以随意调用。在您的特定情况下,您可以使用managers.py
文件(而不是将它们放在models.py
中)-这样做会变得非常明显(而且冗余程度会降低一些):你的经理档案显然有:
我要指出的是,这将被称为:
…这不是最好的调用(与
Clearance.objects.all()
相比-它的作用很明显-techsupport和user\u manager方法不太清楚,这在一定程度上是您问题的根源,imo相关问题 更多 >
编程相关推荐