3 回答
TA贡献1802条经验 获得超5个赞
您不必为此重写方法 [Django-doc],因为该对象已经传递到上下文.get_queryset(…)
。您可以简单地在模板中渲染它:
{{ object.content }}
如果您确实在上下文中需要它,您可以将其实现为:
class PostDetailView(DetailView):
model = Post
# …
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update(
texts=self.object.content
)
return context
如果您需要所有帖子对象,您可以将它们添加到上下文中:
class PostDetailView(DetailView):
model = Post
# …
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update(
texts=self.object.content,
posts=Post.objects.all()
)
return context
并将它们呈现为:
{% for post in posts %}
{{ post.content }}
{% endfor %}
在增加视图计数器以避免竞争条件时,最好使用表达式F
[Django-doc]:
class PostDetailView(DetailView): model = Post def get_object(self): obj = super().get_object() 视图 = obj.view_count obj.view_count = F('view_count') + 1 obj.save() obj.view_count =视图+1 返回 obj
TA贡献1856条经验 获得超5个赞
只需查询所有对象并循环查询集即可根据您的需要操作它们,如下所示:
def your_view(self, **kwargs):
# Get all table entries of Model Post
queryset = Post.objects.all()
# Loop each object in the queryset
for object in queryset:
# Do some logic
print(object.content)
[...]
return (..., ...)
TA贡献1942条经验 获得超3个赞
首批进口车型
from . models import Post
然后在你的函数中
data=Post.objects.values('content').all()
现在 data 具有内容字段 data=[{'content':first_value},{'content':second_value},..like this...] 中的所有值
添加回答
举报