2017-05-22 8 views
0

私のプロジェクトにはある種のTaskがあります。タスクとそのパラメータは後で関数呼び出しに組み立てられます。dbへの関数呼び出しを保存する最良のモデルデザイン

今私の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の辞書を私のフィールドとして保存したいと思います。私が望むものをアーカイブする最良の方法は何ですか?

答えて

1

JSONフィールドを使用できます。あなたはPostgresのを使用している場合、それはそうしないと、擬似JSONフィールドにするために、ライブラリをインストール(またはあなた自身で書く)ことができ、JSONフィールドのサポートが組み込まれています:https://pypi.python.org/pypi/django-jsonfield https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/fields/#jsonfield

は、私はいくつかのプロジェクトでジャンゴ・jsonfieldを使用し、それはスムーズに動作します。

関連する問題