如何在我的数据库中为运行Django的项目存储python代码?

时间:2017-08-26 13:51:50

标签: python django django-models

基本上,我想在我的数据库中存储一些带有一些简单函数的python模块。我的项目在Django上运行。然而,我遇到了python_field,它的马车。我想在Model的save方法上执行代码。这样做的标准方法是什么?感谢。

1 个答案:

答案 0 :(得分:1)

我猜他们不是标准的做法,因为它看起来像反模式。无论如何,出于学术目的,您可以尝试:

from django.db import models
from python_field.fields import PythonCodeField

class MyModel(models.Model):
    ....
    source = PythonCodeField(blank=True, null=True)

    ....

    def save(self, *args, **kwargs):
        codeObject = compile(self.source, '<string>', 'exec')
        exec( codeObject )  #executing before regular save
        super(MyModel, self).save(*args, **kwargs)
        exec( codeObject )  #executing after regular save