3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您不必為此重寫方法 [Django-doc],因?yàn)樵搶?duì)象已經(jīng)傳遞到上下文.get_queryset(…)
。您可以簡(jiǎn)單地在模板中渲染它:
{{ object.content }}
如果您確實(shí)在上下文中需要它,您可以將其實(shí)現(xiàn)為:
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
如果您需要所有帖子對(duì)象,您可以將它們添加到上下文中:
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
并將它們呈現(xiàn)為:
{% for post in posts %}
? ? {{ post.content }}
{% endfor %}
在增加視圖計(jì)數(shù)器以避免競(jìng)爭(zhēng)條件時(shí),最好使用表達(dá)式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貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
只需查詢所有對(duì)象并循環(huán)查詢集即可根據(jù)您的需要操作它們,如下所示:
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貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
首批進(jìn)口車型
from . models import Post
然后在你的函數(shù)中
data=Post.objects.values('content').all()
現(xiàn)在 data 具有內(nèi)容字段 data=[{'content':first_value},{'content':second_value},..like this...] 中的所有值
添加回答
舉報(bào)