path
というCharField
という2つのモデルがあります。それらのうちの1つでは、/
で終わらせ、もう1つでは/
とする必要があります。また、このフィールドは一意で索引を付ける必要があります。私は何も変わりませんがsuper()
への呼び出しの周りtry except
を試みたDjangoは管理コンソールで一意のチャーフィールドを検証します
Dir
モデル(「/」で終了する必要があります)
# The path for sorting, e.g. /stuff/00-1/. Must be unique and is indexed for performance.
path = models.CharField(max_length=75, unique=True, db_index=True, blank=False, validators=RegexValidator(regex=r'^/[A-Za-z0-9/-_]+/$', message="Please enter a valid Dir Path"))
...
def save(self, *args, **kwargs):
# If the path does not end in "/" add it.
if not self.path.endswith("/"):
self.path += "/"
if not self.path.startswith("/"):
self.path = "/" + self.path
# print the result
print("Saving path {}".format(self.path))
super(Dir, self).save(*args, **kwargs) # Call the "real" save() method.
:ここで私は今のところ思い付いたソリューションです。管理コンソールにデータの検証を指示して、保存してクラッシュする前に一意のエラーではないので、管理者が変更できるようにしますか?
TL; DRカスタム正規表現の検証に失敗した場合、管理コンソールでcharfeildの上に赤い線が表示されるようにするにはどうすればよいですか?
解決しました。 MyMigrationが台無しだった。 delete()への検証を追加すること(それに割り当てられた外部キーを変更すること) –