我想管理用户帖子。当有人创建新帖子时,它应该显示在管理员上,而不是显示在html上。如果内容有效,我想要按下允许按钮,它将在html上显示给所有用户。我试着谷歌的东西,但没有任何帮助。我认为逻辑必须是这样的:
它应该如何运作?
答案 0 :(得分:1)
代码中Bear Brown的评论。
models.py
:
class Post(models.Model):
title = models.CharField(max_length=100, unique=True)
content = models.TextField()
is_draft = models.BooleanField(help_text='If checked article gets not published.', default=False)
pub_date = models.DateField(default=timezone.now)
objects = PublishedManager()
通过例如查询Django
shell:
Post.objects.filter(is_draft=False)
managers.py
其他过滤器只返回pub_date
低于或等于当前日期的对象:
class PublishedManager(models.Manager):
def published(self, **kwargs):
return self.filter(pub_date__lte=timezone.now(),
is_draft=False,
**kwargs).order_by('-pub_date')
views.py
:
class PostListView(ListView):
model = Post
def get_queryset(self):
queryset = Post.objects.published()
return queryset
模板:
{% for post in post_list %}
<h1>{{ post.title }}</h1>
{{ post.content }}
{% endfor %}
答案 1 :(得分:0)
如果您只需要这个并且您知道将来不需要任何其他内容(例如is_published
),那么在您的模型中添加needs_editing
字段是一种快速解决方案。大多数时候,这些需求会迅速增加,并且您会陷入复杂代码的恶性循环中,而这些代码并不容易理解。
Django-FSM是一个以干净和干燥的方式完全解决此问题的模块。可以找到一个很好的介绍here。
绝对避免......
州的布尔人
is_new is_active is_published is_draft is_deleted is_paid is_member is_*
相互排斥的状态......有点但有些状态 随着每个布尔增加:
2 bools = 2^2 = 4 states 3 bools = 2^3 = 8 states etc (2^N)
脆弱且状态太多无法检查。