数据库正常,已创建迁移
问题object_list = Post.published.all()
职位:
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique_for_date='publish')
author = models.ForeignKey(User, related_name='blog_posts', on_delete=models.CASCADE)
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=10, choices=STATUS_CHOICES, default='draft')
意见:
def post_list(request):
object_list = Post.published.all()
paginator = Paginator(object_list, 3)
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
return render(request,
'blog/post/list.html',
{'page': page,
'posts': posts})
迁移:
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Post',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=250)),
('slug', models.SlugField(max_length=250, unique_for_date='publish')),
('body', models.TextField()),
('publish', models.DateTimeField(default=django.utils.timezone.now)),
('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)),
('status', models.CharField(choices=[('draft', 'Draft'), ('published', 'Published')], default='draft', max_length=10)),
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blog_posts', to=settings.AUTH_USER_MODEL)),
],
),
]
url main app:
urlpatterns = [
re_path(r'^admin/', admin.site.urls),
re_path(r'^blog/', include(('blog.urls', 'blog'), namespace='blog')),
]
url博客应用程序:
urlpatterns = [
# post views
re_path(r'^$', views.post_list, name='post_list'),
re_path(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
r'(?P<post>[-\w]+)/$',
views.post_detail,
name='post_detail'),
]
- 第一次每次堆栈溢出,抱歉的错误 *
注册在数据库列“published”. idk什么问题
2条答案
按热度按时间a11xaf1n1#
正如dostogircse171所指出的,通过子类化
models.Manager
并定义一个方法来过滤发布的帖子,然后创建一个自定义管理器,将该自定义管理器添加到您的Post模型中,以便能够访问Post.published.all()
试试这个:
rxztt3cl2#
你的orm语法是错误的
object_list = Post.published.all()
在你的post_list
函数的视图,正确的语法是object_list = Post.objects.all(status="published")
,然后你的代码将看起来像这样: