Настройка менеджера моделей в django [дубликат]
Я работаю над проектом блога на django.
вот мой код models.py:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class PublishManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(status=Post.Status.PUBLISHED)
class Post(models.Model):
class Status(models.TextChoices):
DRAFT = 'DF', 'Draft'
PUBLISHED = 'PB', 'Published'
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name="blog_posts")
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250)
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=2,choices=Status.choices,default=Status.DRAFT)
objects = models.Manager()
published = PublishManager()
class Meta:
ordering = ['-publish']
indexes = [
models.Index(fields=['-publish'])
]
def __str__(self):
return self.title
когда я помещаю "published = PublishManager()" поверх "objects = models.Manager()" вот так:
published = PublishManager()
objects = models.Manager()
я обнаружил, что мой администраторский сайт не показывает запись со статусом черновика.
если я создам объект Post со статусом Published, то он будет отображаться на моем сайте администратора. если я создам объект со статусом Draft, то он не будет отображаться на сайте администратора
Я не знаю почему, может ли кто-нибудь помочь мне?
я предполагаю, что, возможно, менеджер по умолчанию является первым менеджером. администратор сайта использует первый менеджер для отображения всех записей.