From 5af5ff55fa7bb2b49f8826d81e20d88d455cbcbd Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Mon, 19 Jan 2026 19:25:04 -0500 Subject: [PATCH] invoked get_absolute_url() on List model to achieve DRY urls in views --- src/apps/dashboard/models.py | 5 ++++- src/apps/dashboard/tests/test_models.py | 4 ++++ src/apps/dashboard/views.py | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/apps/dashboard/models.py b/src/apps/dashboard/models.py index 1ab7882..cc40ed9 100644 --- a/src/apps/dashboard/models.py +++ b/src/apps/dashboard/models.py @@ -1,7 +1,10 @@ from django.db import models +from django.urls import reverse class List(models.Model): - pass + def get_absolute_url(self): + return reverse("view_list", args=[self.id]) + class Item(models.Model): text = models.TextField(default='') diff --git a/src/apps/dashboard/tests/test_models.py b/src/apps/dashboard/tests/test_models.py index 79104a5..0e65abc 100644 --- a/src/apps/dashboard/tests/test_models.py +++ b/src/apps/dashboard/tests/test_models.py @@ -42,3 +42,7 @@ class ListAndItemModelsTest(TestCase): item = Item(list=mylist, text="") with self.assertRaises(ValidationError): item.full_clean() + + def test_get_absolute_url(self): + mylist = List.objects.create() + self.assertEqual(mylist.get_absolute_url(), f"/apps/dashboard/{mylist.id}/") diff --git a/src/apps/dashboard/views.py b/src/apps/dashboard/views.py index 72fe088..c81e35d 100644 --- a/src/apps/dashboard/views.py +++ b/src/apps/dashboard/views.py @@ -15,7 +15,7 @@ def new_list(request): nulist.delete() error = "You can't have an empty list item" return render(request, "apps/dashboard/home.html", {"error": error}) - return redirect(f'/apps/dashboard/{nulist.id}/') + return redirect(nulist) def view_list(request, list_id): our_list = List.objects.get(id=list_id) @@ -26,7 +26,7 @@ def view_list(request, list_id): item = Item(text=request.POST['item_text'], list=our_list) item.full_clean() item.save() - return redirect(f'/apps/dashboard/{our_list.id}/') + return redirect(our_list) except ValidationError: error = "You can't have an empty list item"