Python 如何为相关对象创建自定义管理器?
我有这些相关的模型,其中一个有一个自定义管理器 class Device(Model): name = CharField() class DeviceSettingManager(Manager): use_for_related_fields = True class Setting(Model): name = CharField() value = CharField() device = ForeignKey(Device, related_name='settings') objects = DeviceSettingManager 类别设备(型号): name=CharField() 类设备设置管理器(管理器): 将\u用于与\u相关的\u字段=True 班级设置(模式): name=CharField() value=CharField() 设备=外键(设备,相关的\u name='settings') 对象=设备设置管理器 但是当我运行Django shell时,我看到正在使用“RelatedManager”管理器 >>> d = Device.objects.all()[0] >>> type(d.settings) django.db.models.fields.related.create_foreign_related_manager..RelatedManager >>>d=设备.objects.all()[0] >>>类型(d.设置) django.db.models.fields.related.create\u foreign\u related\u manager..RelatedManagerPython 如何为相关对象创建自定义管理器?,python,django,django-models,Python,Django,Django Models,我有这些相关的模型,其中一个有一个自定义管理器 class Device(Model): name = CharField() class DeviceSettingManager(Manager): use_for_related_fields = True class Setting(Model): name = CharField() value = CharField() device = ForeignKey(Device, related_
如何使DeviceSettingManager用于设备设置?无需在意在管理器上调用
type()
的结果,DeviceSettingManager
实际上正在使用。您可以通过执行以下操作进行检查:
class DeviceSettingManager(models.Manager):
use_for_related_fields = True
def manager_status(self):
print("Device Setting Manager is Active")
并致电:
>>> d = Device.objects.all()[0]
>>> d.settings.manager_status()
Device Setting Manager is Active
即使将管理器显式传递给相关对象,如:
>> d.settings(manager="settings_objects")
当然:
class Setting(Model):
name = CharField()
value = CharField()
device = ForeignKey(Device, related_name='settings')
settings_objects = DeviceSettingManager() # Notice the parenthesis
管理器的类
仍将显示为:django.db.models.fields.related\u描述符。创建多对一管理器..RelatedManager
不要介意
类的名称。不起作用。当我尝试调用管理器方法时,我得到了AttributeError:'RelatedManager'对象没有属性错误。