Django模板:从模型查询集对象中提取字段

     2023-02-24     47

关键词:

【中文标题】Django模板:从模型查询集对象中提取字段【英文标题】:Django template: Extract field from model queryset object 【发布时间】:2016-12-18 13:25:30 【问题描述】:

在 Django 模板中,我使用以下方法获取最新评论:

 blog.comments.all|dictsort:"created_at"|last 

其中blogBlog 模型的一个实例,commentsrelated_nameForeignKeyComment 模型。

这相当于

blog.comments.all().order_by("created_at").last()

问题:如何获取模板中评论的text 字段?

在视图中我可以这样做:

blog.comments.all().order_by("created_at").last().text

如果我尝试:

 blog.comments.all|dictsort:"created_at"|last.text 

我得到一个:

无法解析余数:'.text' TemplateSyntaxError

【问题讨论】:

【参考方案1】:

with标签:

% with newest_comment=blog.comments.all|dictsort:"created_at"|last %
     newest_comment.text 
% endwith %

cached_property装饰者:

models.py

from django.utils.functional import cached_property

class Blog(models.Model):
    @cached_property
    def newest_comment(self):
        return self.comments.order_by('created_at').last()

template.html

 blog.newest_comment.text 

上下文:

context['newest_comment'] = blog.comments.order_by('created_at').last()
return render(request, template, context)

latest()方法:

models.py

class Comment(models.Model):
    class Meta:
        get_latest_by = 'created_at'

template.html

 blog.comments.latest.text 

【讨论】:

您确定第一个 (with) 不应该是 % % @Jedi 已编辑。谢谢!【参考方案2】:

一种方法是使用“with”:

% with blog.comments.all|dictsort:"created_at"|last as lastcomment %
   lastcomment.text 
% endwith %

【讨论】:

Django - UpdateView ModelForm 在查询集字段上设置初始值

】Django-UpdateViewModelForm在查询集字段上设置初始值【英文标题】:Django-UpdateViewModelFormsettinginitialvalueonquerysetfield【发布时间】:2018-11-1915:22:24【问题描述】:我正在尝试更新其中一个值来自查询集的模型对象。对象创建完美-它使... 查看详情

如何从 Django 查询中提取字段名和值

】如何从Django查询中提取字段名和值【英文标题】:HowcaniextractthefieldnamesandvaluesfromDjangoquery【发布时间】:2011-09-3007:08:23【问题描述】:假设我有这个模型classModel():var1=models.TextField()var2=models.FloatField()var3=models.FloatField()var4=models.... 查看详情

从 Django 获取多个随机对象时,查询集如何工作?

】从Django获取多个随机对象时,查询集如何工作?【英文标题】:HowdoquerysetsworkwhengettingmultiplerandomobjectsfromDjango?【发布时间】:2015-01-2806:26:26【问题描述】:我需要从Django模型中获取多个随机对象。我知道我可以通过键入以下... 查看详情

Django - 查询:使用相关模型字段注释查询集

】Django-查询:使用相关模型字段注释查询集【英文标题】:Django-Query:AnnotateQuerysetwithRelatedModelfields【发布时间】:2020-07-3106:16:45【问题描述】:我在Django中使用PostgreSQL有以下Schema。ClassPerson(models.Model):name=models.CharField(max_length=25... 查看详情

从 Django 模板中的特定相关对象查询数据

】从Django模板中的特定相关对象查询数据【英文标题】:QueryingdatafromaspecificrelatedobjectinDjangotemplate【发布时间】:2011-06-2203:07:43【问题描述】:我正在尝试使用Django显示来自多个模型的信息表,但我不确定这样做的最佳实践是什... 查看详情

如何获取与传递给 Django 模板的查询集相关的查询集对象

】如何获取与传递给Django模板的查询集相关的查询集对象【英文标题】:HowdoyougetquerysetobjectsrelatedtoquerysetpassedtotemplatesinDjango【发布时间】:2021-02-2518:20:42【问题描述】:我有这两个模型,你可以看到它们有关系。classPost(models.Mo... 查看详情

Django更改查询集字段不影响数据库

】Django更改查询集字段不影响数据库【英文标题】:DjangochangequerysetfieldnotaffectingDB【发布时间】:2016-04-2822:11:25【问题描述】:如果有更改查询集字段的方法,对其应用函数,然后在模板中访问此字段?@property(getter/setter)不能用... 查看详情

如何对从查询集多对多字段中提取的列表进行分组?

...1-07-2712:15:41【问题描述】:我有一个描述电视频道本质的模型:classChannelCategory(models.Model):name=models.CharField(max_length=200,db_index=Tr 查看详情

如何从序列化器字段订购 django rest 框架查询集?

】如何从序列化器字段订购djangorest框架查询集?【英文标题】:Howtoorderdjangorestframeworkquerysetfromserializerfield?【发布时间】:2018-01-0104:35:42【问题描述】:如何从序列化器字段订购DjangoQuerySet?由于字段太复杂,我无法使用annotate... 查看详情

django 模板从查询集更改了日期格式

】django模板从查询集更改了日期格式【英文标题】:djangotemplatechangeddateformatfromqueryset【发布时间】:2013-03-2700:20:28【问题描述】:我创建了一个查询集:my_data=My_User.objects.filter(Q(first_name=\'John\')|Q(last_name=\'Doe\'))现在my_data中的字... 查看详情

有没有办法将 Django 模型查询集转换为模板中的 json 或 json 字符串?

】有没有办法将Django模型查询集转换为模板中的json或json字符串?【英文标题】:IsthereanywayconvertDjangomodelquerysettojsonorjsonstringintemplate?【发布时间】:2018-04-2214:02:47【问题描述】:我想将react(或vue)与django模板结合起来,但我不... 查看详情

如何将数据库查询集对象从基于类的视图传递到 Django 2.0 中的模板

】如何将数据库查询集对象从基于类的视图传递到Django2.0中的模板【英文标题】:HowtopassdatabasequerysetobjectsfromclassbasedviewstotemplatesinDjango2.0【发布时间】:2018-02-0719:37:24【问题描述】:我正在构建一个Web应用程序。我正在尝试将... 查看详情

从 django 模型创建 javascript 对象(类)

】从django模型创建javascript对象(类)【英文标题】:Createjavascriptobject(class)fromdjangomodel【发布时间】:2014-07-2517:53:29【问题描述】:我正在开发一个单页应用程序,它将从大约十几个不同的django模型加载数据,允许用户操作数据... 查看详情

django:如何在 ManyToManyField(通过)相关模型中的字段上对查询集进行排序

】django:如何在ManyToManyField(通过)相关模型中的字段上对查询集进行排序【英文标题】:django:HowtoorderthequerysetonafieldinManyToManyField(through)relatedmodels【发布时间】:2011-11-1121:38:20【问题描述】:我有这些模型classRegion(models.Model):n... 查看详情

如何在 Django 中序列化模型实例?

】如何在Django中序列化模型实例?【英文标题】:HowdoyouserializeamodelinstanceinDjango?【发布时间】:2010-10-1921:53:40【问题描述】:有很多关于如何序列化模型查询集的文档,但是如何将模型实例的字段序列化为JSON?【问题讨论】:... 查看详情

为啥 Django 模板不能从对象字段中识别列表?

】为啥Django模板不能从对象字段中识别列表?【英文标题】:Whywon\'tDjangotemplaterecognizelistfromobjectfield?为什么Django模板不能从对象字段中识别列表?【发布时间】:2019-11-0709:49:21【问题描述】:我有一个存储列表的对象字段。Djang... 查看详情

Django 查询集过滤具有相同多对多字段的对象

】Django查询集过滤具有相同多对多字段的对象【英文标题】:Djangoquerysettofilterobjectswithidenticalmanytomanyfield【发布时间】:2020-06-1619:40:00【问题描述】:我有一个这样的模型。classComponent(models.Model):options=models.ManyToManyField(\'prices.Opt... 查看详情

模型字段类型从 CharField 更改为 ForeignKey 时 Django 模板损坏

】模型字段类型从CharField更改为ForeignKey时Django模板损坏【英文标题】:DjangoTemplateBrokeWhenModelFieldTypeChangedFromCharFieldtoForeignKey【发布时间】:2021-04-2019:07:20【问题描述】:我有一组模板,它们都以相同的object_list开头。第一个(revie... 查看详情