Как включить предыдущие годы в форму Django Model

Простите меня, если этот вопрос уже задавался
. У меня есть блог и я использую шаблон, который вы можете увидеть на сайте Djangos (с небольшими изменениями)
. Когда я создаю новый блог, я могу выбрать дату от 1 января 2022 года до 31 декабря
. Однако есть некоторые записи, которые я сделал в прошлом году и хотел бы включить правильную дату для них.
Любая помощь будет оценена

p.s. В качестве базы данных я использую Sqlite

View

from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import get_object_or_404, render, redirect
from django.views.generic import (
    CreateView,
    ListView,
    UpdateView,
    DetailView
)

from tags.models import Tag

from .forms import BlogForm
from .models import Blog


class BlogCreateView(LoginRequiredMixin, CreateView):
    template_name = 'blog/create_blog.html'
    form_class = BlogForm
    queryset = Blog.objects.all()

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super().form_valid(form)


class BlogUpdateView(LoginRequiredMixin, UpdateView):
    template_name = 'blog/create_blog.html'
    form_class = BlogForm
    queryset = Blog.objects.all()

    def form_valid(self, form):
        return super().form_valid(form)


def blog_delete_view(request, slug):
    obj = get_object_or_404(Blog, slug=slug)
    if request.method == "POST":
        obj.delete()
        return redirect('blog:home')
    context = {
        "object": obj
    }
    return render(request, "blog/delete_blog.html", context)


class BlogListView(ListView):
    template_name = "blog/home.html"
    model = Blog
    blog_public = model.objects.filter(is_public=True, tags__public=True)

    def get_context_data(self, *args, **kwargs):
        context = super(BlogListView, self).get_context_data(*args, **kwargs)
        request = self.request
        user = request.user
        blog_tag = Tag.objects.filter(name="blog").first()

        if user.is_authenticated:
            blog_user = self.model.objects.filter(user=user)[:5]
        else:
            blog_user = None

        blog_obj = self.model.objects.filter(tags=blog_tag, is_public=True)[:5]

        context['blog_obj_public'] = self.blog_public
        context['user_blog_obj'] = blog_user
        context['title'] = "Blog"
        context['description'] = "Blogs"
        context['blog_obj'] = blog_obj
        return context

    def get_queryset(self, *args, **kwargs):
        return Blog.objects.all()


class BlogDetailSlugView(DetailView):
    template_name = "blog/detail.html"
    model = Blog

    def get_context_data(self, *args, **kwargs):
        context = super(BlogDetailSlugView, self).get_context_data(*args, **kwargs)
        slug = self.kwargs.get('slug')
        try:
            blog_obj = Blog.objects.get(slug=slug)
        except:
            blog_obj = None

        context['blog_list'] = Blog.objects.all()
        context['title'] = blog_obj.title
        context['description'] = blog_obj.blog_post
        return context

Модель

from django.contrib.auth import get_user_model
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.shortcuts import reverse

from eCommerce.utils import unique_slug_generator
from tags.models import Tag
User = get_user_model()


class BlogManagerQuerySet(models.query.QuerySet):
    def public_post(self):
        return self.filter(is_public=True)


class BlogManager(models.Manager):
    def get_queryset(self):
        return BlogManagerQuerySet(self.model, using=self._db)

    def public_post(self):
        return self.get_queryset().public_post()


class Blog(models.Model):
    user        = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
    title       = models.CharField(max_length=255)
    slug        = models.SlugField(unique=True)
    date        = models.DateTimeField(auto_now=False)
    blog_post   = models.TextField(blank=True, null=True)
    tags        = models.ManyToManyField(Tag, blank=True)
    is_public   = models.BooleanField(default=False)
    updated     = models.DateTimeField(auto_now=True)
    meta_data   = models.TextField(null=True, blank=True)
    timestamp   = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-date',)

    objects = BlogManager()

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("blog:detail", kwargs={"slug": self.slug})


@receiver(pre_save, sender=Blog)
def blog_pre_save_receiver(sender, instance, **kwargs):
    if not instance.slug:
        instance.slug = unique_slug_generator(instance)

form.py

from django import forms
import datetime

from .models import Blog


class BlogForm(forms.ModelForm):
    class Meta:
        now = datetime.datetime.now().date()
        model = Blog
        fields = ['title', 'date', 'blog_post', 'tags', 'is_public']
        widgets = {
            "date": forms.SelectDateWidget(
                attrs={
                    "value": now
                }
            )
        }
Вернуться на верх