Django管理面板无法访问特定项目

2024-05-04 20:34:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文章的模型,除了我把他们的状态改为草稿外,一切都很好——它从AdminDjango面板中消失了。新文章已成功添加,但不显示,管理面板无法访问它们。当我更改URL以强制管理面板显示详细信息以便编辑它时,我会收到一条消息,说明具有给定ID的文章不存在。因此,基本上每个条款草案都会丢失。但我知道它们必须存在于我的数据库中,因为它们显示在我的文章列表视图中,但我不能转到详细视图或草稿视图,因为我总是得到“没有与给定查询匹配的新闻模型”

Django 2.0.5

models.py

class NewsModel(models.Model):
    STATUS_CHOICES = (
        ('draft','Draft'), 
        ('published','Published'),
    )

    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
    title = models.CharField(max_length=250)
    slug = AutoSlugField(populate_from='title')
    body = models.TextField()   
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES)   
    image = models.ImageField(upload_to="news/")
    description = models.TextField(null=True, blank=True)

    def get_absolute_url(self):
        from django.urls import reverse
        return reverse('main:news_details', kwargs={'slug':self.slug})

    def __str__(self):
        return self.title
    
    class Meta:
        ordering = ('-publish',)
        verbose_name = 'News'
        verbose_name_plural = 'News'

管理员

@admin.register(NewsModel)
class NewsAdmin(admin.ModelAdmin):
    list_display = ('title', 'game', 'news_type', 'author', 'finish', 'publish')

views.py

def news_details(request, slug):
    news = get_object_or_404(NewsModel, slug=slug)
    news_aside = NewsModel.objects.filter(game=news.game).exclude(id=news.id)[:5]
    return render(request, 'news/news_details.html', {'news':news, 'news_aside':news_aside, 'section':'news'})

def news(request):
""" List of all news """
    news = NewsModel.objects.filter(status='published')[:3]

    latest = news[0]
    second = news[1]
    third = news[2]

    all_kind_news = NewsModel.objects.all()
    return render(request, 'news/news.html', {'news':news, 'section':'news', 'all':all_kind_news, 'latest':latest, 'second':second, 'third':third, 'section':'news'})

def drafts(request):
""" List of all drafts """
    news = NewsModel.objects.filter(status='draft')

    paginator = Paginator(news, 9)
    page = request.GET.get('page')
    
    try:
        news = paginator.page(page)
    except PageNotAnInteger:
        news = paginator.page(1)
    except EmptyPage:
        news = paginator.page(paginator.num_pages)


    return render(request, 'news/news_list.html', {'news':news, 'section':'news', 'page':page})

url.py(附加以防万一)

path('news/', views.news, name='news'),
path('news/<slug>', views.news_details, name='news_details'),
path('news/drafts', views.drafts, name='drafts'),

新闻详细信息、草稿和管理面板在尝试访问草稿时抛出404错误,但新闻列表没有该问题。最奇怪的是,管理面板也受到影响


Tags: name面板returnmodelsrequestdef文章page