DjangoのCreateView, UpdateViewを利用していると"ImproperlyConfigured Either provide a url or define a get_absolute_url method on the Model."
と表示される時がある。
この場合の解決法について、以下に記述する。
以下のような画面が表示される。
これは、Create, Updateした後に、遷移先がないことによるエラーである
画面上にエラーが出るのみで実際にDBを確認するとCreate, Updateされている。
エラーをなくすには、models.pyにget_absolute_url(self)関数を定義して、django.urls.reverseを使い、Create, Update後の遷移先を指定すればよい。
以下のように記述する。
- models.py
from django.urls import reverse
class School(models.Model):
name = models.CharField(max_length=256)
principal = models.CharField(max_length=256)
location = models.CharField(max_length=256)
def __str__(self):
return self.name
def get_absolute_url(self):
# get_absolute_urlで遷移先を指定
return reverse("basic_app:detail", kwargs={'pk': self.pk})
このように設定すると、Create, Update後にbasic_app:detail/pk=self.pkに遷移するようになり、エラーがなくなる。