Created form template to add a news item and minor updates to models & views.

dev
Calum Andrew Morrell 2025-11-13 11:19:20 +00:00
parent 06d235d602
commit e9efe8ba77
3 changed files with 29 additions and 2 deletions

View File

@ -50,10 +50,10 @@ class NewsItem(models.Model):
get_user_model(), on_delete=models.CASCADE, related_name="news_items"
)
def save(self):
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
return super(NewsItem, self).save()
return super(NewsItem, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse_lazy("news:detail", args=[self.category.slug, self.slug])

View File

@ -0,0 +1,13 @@
{% extends 'base.html' %}
{% block content %}
<div>
<h1>News Item</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create Item">
<a href="{% url 'dashboard:dashboard' %}">Cancel</a>
</form>
</div>
{% endblock %}

View File

@ -1,5 +1,7 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import (CreateView, DetailView, ListView,
RedirectView, UpdateView)
@ -10,8 +12,20 @@ class CategoryList(ListView):
model = Category
@method_decorator(login_required, name="dispatch")
class NewsItemCreate(CreateView):
model = NewsItem
fields = [
"title",
"category",
"body",
"origin_text",
"origin_link",
"header_img",
"tags",
"is_published",
"is_featured",
]
success_url = reverse_lazy("dashboard:dashboard")
def form_valid(self, form):