如何在Django

时间:2018-03-13 09:09:17

标签: django django-models

目标是在保存模型时从列表字段中删除重复项。例如,在迁移中创建:

def migrate_model(apps, *args):
    MyModel = apps.get_model('my_app.MyModel')
    m = MyModel.objects.create(
        array_field=['123','123'],
    )
    m.array_field  # ['123']

我试图覆盖save,但它不起作用

class MyModel(models.Model):
    array_field = ArrayField(models.CharField(max_length=5))
    def save(self, *args, **kwargs):
        if self.array_field:
            self.array_field = list(set(self.array_field))
        super(MyModel, self).save(*args, **kwargs)

我该怎么做?

1 个答案:

答案 0 :(得分:0)

小心,根据django docs,save()方法在使用create()时被 NOT 调用。

也许这会导致问题,因为你的覆盖保存方法实际上并没有被调用。