Python 从字段中获取Django字段值
我在为Django应用程序建模时遇到了意想不到的困难。我有一个模型,它由属性组成。某些特性具有外部(主数据)表示形式。我希望能够获得我在应用程序中使用的表示和主数据表示。我的想法是使用一个定制的Python 从字段中获取Django字段值,python,django,django-models,Python,Django,Django Models,我在为Django应用程序建模时遇到了意想不到的困难。我有一个模型,它由属性组成。某些特性具有外部(主数据)表示形式。我希望能够获得我在应用程序中使用的表示和主数据表示。我的想法是使用一个定制的django.db.models字段,并添加一个方法来获取主数据表示。然后我可以使用model.field作为“本机”表示,使用model.field.mdm_guid()作为外部表示 但是,从字段继承时,我没有找到访问该字段自身值的方法 目前,代码如下所示: class MdmField(TextFie
django.db.models
字段,并添加一个方法来获取主数据表示。然后我可以使用model.field
作为“本机”表示,使用model.field.mdm_guid()
作为外部表示
但是,从字段继承时,我没有找到访问该字段自身值的方法
目前,代码如下所示:
class MdmField(TextField):
def __init__(self, *kargs, **kwargs):
self.mdm_type = kwargs.pop('mdm_type', None)
def mdm_guid(self, value):
return masterdata[self.mdm_type].get(value, 0)
masterdata
字典包含这些外部表示,但这对于这个问题并不重要
我为需要传递字段的值而烦恼!我不能从字段本身中访问字段的值吗?没有办法从现场找到模型吗
谢谢 请注意以下部分:
重要的是要认识到Django字段类不是存储在模型属性中的类。模型属性包含普通Python对象。创建模型类时,您在模型中定义的字段类实际上存储在Meta
类中(关于如何执行此操作的确切细节在这里并不重要)。这是因为在创建和修改属性时不需要字段类。相反,它们提供了在属性值和存储在数据库中或发送到序列化程序的内容之间进行转换的机制
这就是为什么自定义字段要求您传入一个值——它只是进行转换,而不是模型实例的一部分
相反,您可以定义一个普通的老Python类,该类具有mdm\u guid()
方法,并让自定义字段获取并返回该方法。例如,请参见上述文档中的Hand
类和HandField
类之间的区别。感谢您的启发!