我有一个文章的模型,除了我把他们的状态改为草稿外,一切都很好——它从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错误,但新闻列表没有该问题。最奇怪的是,管理面板也受到影响
目前没有回答
相关问题 更多 >
编程相关推荐