【发布时间】:2023-04-01 04:48:02
【问题描述】:
我有一个带有 charfield 作为主键的模型。 创建实例时(通过管理面板)一切都很好,我的干净方法也可以。但是,如果我回来更新 myfield,不仅 clean 方法无法捕获非数字字符,而且整个实例都是重复的。一个具有旧的 myfield 值,一个具有更改的 myfield 的新值。
# models.py
class Mymodel(models.Model):
myfield = models.CharField(primary_key=True, max_length=10)
...
def clean(self):
if not re.match(r'[0-9]+', self.pesel):
raise ValidationError('Digits only.', code='invalid')
super(Mymodel, self).clean()
我该如何解决这个问题?我需要它是一个主键,我需要它是可编辑的。这个清洁工作不正常的额外问题,我认为它可能是连接的。我是 Django 1.5.5
【问题讨论】:
-
为什么你需要它成为 pk?为什么没有默认的自动 ID?
-
不是我的电话,项目要求
-
为什么不将验证放入
ModelForm? -
我的意思是通过 django admin 更新一个实例。更改 myfield 的值并单击保存按钮不会更改实际实例,而是创建(复制所有其他字段)新实例。
-
@BurhanKhalid 见docs.djangoproject.com/en/1.5/ref/models/instances/…
标签: python django django-models django-admin