invoked get_absolute_url() on List model to achieve DRY urls in views

This commit is contained in:
Disco DeDisco
2026-01-19 19:25:04 -05:00
parent 0b0ae6d5b0
commit 5af5ff55fa
3 changed files with 10 additions and 3 deletions

View File

@@ -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='')

View File

@@ -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}/")

View File

@@ -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"