Данные не сохраняются в базе данных
Я не знаю, что здесь происходит, всякий раз, когда я пытаюсь создать бузу со статусом, установленным на Draft
(это также статус по умолчанию, установленный в модели) Django возвращает ответ 302
и не сохраняет его в базе данных. Однако, когда я меняю статус на Published
, он просто нормально сохраняет его в базе данных.
Вот код для view
def buzz_create(request):
form = BuzzCreateForm()
if request.method == 'POST':
form = BuzzCreateForm(data=request.POST)
if form.is_valid:
buzz = form.save(commit=False)
buzz.author = request.user
buzz.save()
return redirect(to=reverse('buzz:buzz_list'))
return render(
request=request,
template_name='buzz/create.html',
context={ 'form': form }
)
Вот код для модели:
class BuzzPublishedManager(models.Manager):
def get_queryset(self):
return (
super().get_queryset().filter(status=Buzz.Status.PUBLISHED)
)
class Buzz(models.Model):
class Status(models.TextChoices):
PUBLISHED = 'PBL', 'Published'
DRAFT = 'DFT', 'Draft'
title = models.CharField(max_length=250)
body = models.TextField()
slug = models.SlugField(max_length=250, unique_for_date='publish')
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
author = models.ForeignKey(
to=settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='buzzes'
)
status = models.CharField(
max_length=3,
choices=Status,
default=Status.DRAFT
)
published = BuzzPublishedManager()
objects = models.Manager()
class Meta:
verbose_name_plural = 'Buzzes'
ordering = ['-publish']
indexes = [
models.Index(fields=['-publish'])
]
def __str__(self):
return self.title
Раньше objects
в модели не было. Я попробовал добавить его, возможно, данные сохраняются, но не запрашиваются из-за BuzzPublishedManager
, но все равно эффекта нет.