将函数调用保存到数据库中的最佳模型设计



我的项目中有某种Task。任务及其参数稍后将构造为函数调用。

现在我的Task模型如下所示:

class Task(TimeStampedModel):
    ACTIVE = 1
    COMPLETED = 0
    FAILED = -1
    STATUS_CHOICES = (
        (ACTIVE, 'Active'),
        (COMPLETED, 'Completed'),
        (FAILED, 'Failed'),
    )
    ACTION1 = 1
    ACTION2 = 2
    ACTION3 = 3
    ACTION_CHOICES = (
        (ACTION1, 'Action1'),
        (ACTION2, 'Action2'),
        (ACTION3, 'Action3'),
    )
    status = models.SmallIntegerField(choices=STATUS_CHOICES, default=ACTIVE)
    action = models.SmallIntegerField(choices=ACTION_CHOICES, default=ACTION1)
    date_completed = models.DateTimeField(null=True, blank=True)

稍后我将创建Task对象,并根据其action调用特定函数。例如,如果task.action == 1我会打电话给some_module.action1().我很好奇如果我不确定将来会是什么,我如何存储可以传递给函数(some_module.action1(arg1, arg2)(的参数。所以,如果可以这么说,我想存储某种函数 kwargs 字典作为我的字段。归档所需内容的最佳方式是什么?

您可以使用 JSON 字段

。 如果你使用 Postgres,它内置了 JSON 字段支持,否则你可以安装(或自己编写(一个库来制作伪 JSON 字段:https://pypi.python.org/pypi/django-jsonfieldhttps://docs.djangoproject.com/en/1.11/ref/contrib/postgres/fields/#jsonfield

我在几个项目中使用 django-jsonfield,它运行顺利。

最新更新