使用Django ORM,如何为所有可能的组合创建唯一的哈希

pyC*_*hon 7 python django django-models

我想为模型中的每个选择组合维护一个具有唯一id的Django模型.然后,我希望能够使用新字段更新模型,而不是先前的唯一ID更改.id可以是哈希或整数或任何东西.实现这一目标的最佳方法是什么?

class MyModel(models.Model):
    WINDOW_MIN = 5
    WINDOW_MAX = 7
    WINDOW_CHOICES = [(i,i) for i in range(WINDOW_MIN - 1, WINDOW_MAX - 1)]
    window = models.PositiveIntegerField('Window', editable=True, default=WINDOW_MIN, choices=WINDOW_CHOICES)
    is_live = models.BooleanField('Live', editable=True, default=False)
    unique_id = ....
Run Code Online (Sandbox Code Playgroud)

鉴于上面的例子,将有3*2 == 6个唯一id.如果我添加另一个可编辑的布尔字段,我不想更改以前的唯一ID,但我希望为新的布尔字段生成新的唯一ID.

这背后的思考过程是MyModel中的参数定义函数的输入,该函数的结果MyResultModel通过unique_id和模型的名称存储在另一个Django 模型中.这背后的原因是MyModel每个都有多个变体,它们自己设置的唯一组合会定期更新,但MyResultModel中的结果集在MyModel1和MyModelN之间是相同的.理想情况下,我希望unique_id是自动生成的.换句话说,存储在其中的结果集的键MyResultModel是model_name(MyModel)和unique_id.我想要将这么多(MyModel1,... MyModelN)管理到一个(MyResultModel)关系.

class MyResultModel(models.Model):
    unique_id = ...
    model_name = models.CharField(max_length=200, default='', blank=False) # Points to a Django Model ex MyModel
    result1 = ...
    result2 = ...
Run Code Online (Sandbox Code Playgroud)

pyC*_*hon 0

另一种可能的解决方案是存储参数JsonField

https://bitbucket.org/schinckel/django-jsonfield