为了账号安全,请及时绑定邮箱和手机立即绑定

Django Pickle Field在加载时对其模型实例的访问

Django Pickle Field在加载时对其模型实例的访问

慕码人8056858 2021-03-17 14:10:29
我有一个自定义django字段子类,用于存储自己的腌制类。有什么方法可以设置一个model属性,该属性指向数据库每次加载时在我的腌制类上的模型实例?到目前为止,我最好的猜测是在方法内部的解开过程中,to_python但是我不确定能否Field引用模型实例或类。
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

弄清楚了!


我__init__像这样覆盖了模型的方法:


class MyModel(models.Model):

    def __init__(self, *args, **kwargs):

        # Don't do any extra looping or anything in here because this gets called

        # at least once for every row in each query of this table

        self._meta.fields[2].model_instance = self

        super(MyModel, self).__init__(*args, **kwargs)

    field1 = models.TextField()

    field2 = models.PickleField()

    field3 = models.DateTimeField()

然后在我的字段子类中:


def to_python(self, value):

    # logic and unpickling, then right before your return:

    if hasattr(self, 'model_instance'): # avoid AttributeError if list, dict, etc.

        value.model_instance = self.model_instance

    return value


查看完整回答
反对 回复 2021-03-30
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信