我的项目中有一些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的字典作为我的字段。什么是存档我想要的最佳方式?
答案 0 :(得分:1)
您可以使用JSON字段。如果你使用Postgres,它内置了JSON字段支持,否则你可以安装(或自己编写)一个库来制作伪JSON字段: documentation https://pypi.python.org/pypi/django-jsonfield
我在一些项目中使用django-jsonfield,它运作顺畅。