更新数据库中的Model值:Django

时间:2018-07-09 04:01:27

标签: django django-models models django-database

我已经在Django中创建了一个模型,如下所示:

class LatestSavedKeyPassword(models.Model):

    key_password = models.CharField(
        max_length=20,
        default='',
        blank=True,
        help_text="<b><a>System Generated, Do Not Alter</a></b>")

    def __str__(self):
        return self.key_password 

现在,我想将值passwordval保存到该字段中。

我想通过admin.py在该模型中保存价值

def save_key_password(self, request):
    LatestSavedKeyPassword.objects.update(
            cert_password=password)

我可以这样保存值吗?

我也希望当我再次使用此模型时,以前的值会更新,并且不希望创建新条目。

如何做到?

我正在使用Django 2.0和python 3.5

1 个答案:

答案 0 :(得分:0)

尝试覆盖save()类的aa方法

from django.core.exceptions import ValidationError


class LatestSavedKeyPassword(models.Model):
    key_password = models.CharField(
        max_length=20,
        default='',
        blank=True,
        help_text="System Generated, Do Not Alter")

    def __str__(self):
        return self.key_password

    def save(self, **kwargs):
        if LatestSavedKeyPassword.objects.exists() and not self.pk:
            raise ValidationError('your error message')
        return super(LatestSavedKeyPassword, self).save(**kwargs)


如果数据库中存在至少一个LatestSavedKeyPassword实例,并且 LatestSavedKeyPassword.objects.exists() 返回True            如果刚创建实例,则self.pk将是None或类似的值。

参考Allow only one instance of a model in Django