在 Django 模板中格式良好的缺失值的模型字段列表

     2023-02-24     271

关键词:

【中文标题】在 Django 模板中格式良好的缺失值的模型字段列表【英文标题】:List of model fields with missing values nicely formatted in Django template 【发布时间】:2020-01-21 21:48:51 【问题描述】:

我正在尝试在 Django 中创建一个视图,以列出模型中的每个条目以及任何缺少值的字段。模板是一个表格:一列是特定字段,另一列是包含缺失值的字段的列表。我有一个工作版本,但缺少的字段只是串在一起,我希望它们之间用逗号很好地格式化。

#models.py
class exif(models.Model):
    image = models.ForeignKey('image', on_delete=models.CASCADE, blank=False, null=False)
    filename = models.CharField(max_length=100, blank=True, null=True)
    artist = models.CharField(max_length=100, blank=True, null=True)
    copyright = models.CharField(max_length=100, blank=True, null=True)
    keywords = models.CharField(max_length=100, blank=True, null=True)
    caption = models.CharField(max_length=100, blank=True, null=True)
    comment = models.CharField(max_length=100, blank=True, null=True)
    ...
#views.py
def exif_export(request):
    exif_records = serializers.serialize("python", exif.objects.all())
    return render(request, 'exif_export.html', 'exif_records': exif_records)
#exif_export.html
<table>
<tr>
  <th>File</th>
  <th>Missing Exif Fields</th>
</tr>
% for record in exif_records %
<tr>
  <td>
  % for field, value in record.fields.items %
    % if field == 'filename' %
       value 
    % endif %
  % endfor %
  </td>
  <td>
  % for field, value in record.fields.items %
    % if not value %
         field , <!-- This comma makes a trailing comma at the end of the list -->
    % endif %
  % endfor %
  </td>
</tr>
% endfor %
</table>

有没有一种好方法可以将这些字段格式化为一个漂亮的列表?现在它看起来像:artist, comment, 如果它看起来像这样就好了:artist, comment 甚至更好:Artist, Comment 我是否必须在视图中制作字典或其他内容并将其传递给模板?或者有没有办法在 Django 和/或 Python 中创建一个缺少值的字段列表?如果模板能处理就好了,我实在想不出别的办法了。

【问题讨论】:

【参考方案1】:

您可以使用 field|capfirst 将第一个字母大写,删除尾随逗号,您可以这样做

  % for field, value in record.fields.items %
    % if not value and field != last_field %
         field|capfirst ,
    % endif %
  % endfor %
   last_feild|capfirst 

并在某处(可能在模型中)传递last_field

或者,您可以编写一个模板标签来为您执行此操作。

【讨论】:

capfirst 很棒,我不知道。不知道如何获得last_field,因为它可能会随着每一行而改变。 您可以(在后端)执行以下操作:'fields': fields, 'last_field': fields.pop()

django:为啥在模板中获取模型的 .id 字段很慢?

】django:为啥在模板中获取模型的.id字段很慢?【英文标题】:django:whyisgettingmodel\'s.idfieldintemplateslow?django:为什么在模板中获取模型的.id字段很慢?【发布时间】:2011-11-1803:18:50【问题描述】:我有一个模板,它最终会输出大... 查看详情

Django 1.6 无法在模板中显示来自模型的多对多字段

】Django1.6无法在模板中显示来自模型的多对多字段【英文标题】:Django1.6Cantdisplayamanytomanyfieldfrommodelsintemplate【发布时间】:2014-07-2821:12:05【问题描述】:我正在尝试在模板中显示来自医生模型的多对多字段。每个医生都有不止... 查看详情

Django模板按“不相关”模型的字段排序

】Django模板按“不相关”模型的字段排序【英文标题】:Djangotemplatesortby\'unrelated\'model\'sfield【发布时间】:2015-02-1810:20:28【问题描述】:我正在尝试通过模型中的一个字段对模板中的相关项目进行排序,这三个ForeignKey关系相距... 查看详情

Django在具有多个值的多个字段中搜索

】Django在具有多个值的多个字段中搜索【英文标题】:Djangosearchinmultiplefieldwithmultiplevalue【发布时间】:2017-11-0600:26:49【问题描述】:我有一个模型可以存储用户的登录注销时间和日期classLoginLogout(models.Model):username=models.CharField(m... 查看详情

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

】Django模板:从模型查询集对象中提取字段【英文标题】:Djangotemplate:Extractfieldfrommodelquerysetobject【发布时间】:2016-12-1813:25:30【问题描述】:在Django模板中,我使用以下方法获取最新评论:blog.comments.all|dictsort:"created_at"|last其... 查看详情

如何使用 django rest 框架在模板中获取模型选择字段名称而不是 id

】如何使用djangorest框架在模板中获取模型选择字段名称而不是id【英文标题】:HowtogetModelChoiceFieldnameinsteadofidintemplateusingdjangorestframework【发布时间】:2017-01-0420:04:04【问题描述】:我在模板中获得了选择字段的ID。但我希望显示... 查看详情

布尔值的 Django 模板标签

】布尔值的Django模板标签【英文标题】:DjangoTemplateTagforBooleanValue【发布时间】:2017-05-1506:01:02【问题描述】:我是Django新手,我被困在一个模板标签上,我不知道如何开始工作。我知道在我看来我遗漏了一些东西,但我已经用... 查看详情

从与模板中的 django 用户关联的模型中访问字段

】从与模板中的django用户关联的模型中访问字段【英文标题】:Accessingfieldsfromanmodelassociatedtoadjangouserintemplate【发布时间】:2017-10-0403:50:07【问题描述】:我有一个模型User_Details与每个Django用户关联。它有一个名为mobile_number的字... 查看详情

我们可以格式化模型表单如何在模板上的 Django 中显示吗

】我们可以格式化模型表单如何在模板上的Django中显示吗【英文标题】:CanweformatastohowtheModelFormdisplaysinDjangoontemplate【发布时间】:2015-11-2308:05:29【问题描述】:所以我使用django用户模型(来自django.contrib.auth.models导入用户)并... 查看详情

我们可以格式化模型表单如何在模板上的 Django 中显示吗

】我们可以格式化模型表单如何在模板上的Django中显示吗【英文标题】:CanweformatastohowtheModelFormdisplaysinDjangoontemplate【发布时间】:2015-11-2308:05:29【问题描述】:所以我使用django用户模型(来自django.contrib.auth.models导入用户)并... 查看详情

如何从模板标签中的模型对象中获取 django 模型字段值

】如何从模板标签中的模型对象中获取django模型字段值【英文标题】:Howtogetdjangomodelsfieldvaluefrommodelobjectintemplatetags【发布时间】:2011-10-0709:20:53【问题描述】:Models.py:classDiscussion(models.Model):version=models.TextField(blank=True)team=model... 查看详情

从模型中显示(在模板中)选择 - Django

】从模型中显示(在模板中)选择-Django【英文标题】:Display(inTemplate)choicefromModel-Django【发布时间】:2018-10-1902:29:48【问题描述】:我需要从模板调用模型中的选择字段。models.py:...CAT=(("1","1"),("2","2"),)cat=models.CharField(max_length=2,... 查看详情

Django:在模板中显示选定的多项选择字段的值

】Django:在模板中显示选定的多项选择字段的值【英文标题】:Django:Displayvaluesoftheselectedmultiplechoicefieldinatemplate【发布时间】:2012-04-1703:31:37【问题描述】:我正在尝试找到一种方法来显示多选字段的选定/初始值的文本。我的... 查看详情

DJANGO:在模板中显示多对多的附加字段

】DJANGO:在模板中显示多对多的附加字段【英文标题】:DJANGO:Showingmany-to-manyadditionalfieldsintemplate【发布时间】:2012-03-2909:36:58【问题描述】:我有以下情况:一个项目可以属于多个部门,员工被分配到多个项目的角色。如何在... 查看详情

Django:在模板中组合变量和 HTML id

】Django:在模板中组合变量和HTMLid【英文标题】:Django:combinevariableandHTMLidintemplate【发布时间】:2017-04-0300:39:05【问题描述】:我正在寻找一种使用Javascript变量“连接”django对象列表(通过views.py中的get_queryset获取)的方法。然... 查看详情

Django 基于类的视图中的字段派生模板名称

】Django基于类的视图中的字段派生模板名称【英文标题】:Field-derivedtemplatenamesinDjangoclass-basedviews【发布时间】:2011-07-3020:30:32【问题描述】:我无法弄清楚如何在Django的新的基于类的视图中从模型的字段名称加载模板。基本上... 查看详情

如何在 Django 2 模型和模板中使用 DatetimeField

】如何在Django2模型和模板中使用DatetimeField【英文标题】:HowtouseDatetimeFieldinDjango2modelsandTemplates【发布时间】:2019-06-1308:17:07【问题描述】:我正在处理一个需要使用几个DateTime字段的项目,我在模型中定义了DatetimeField,然后在... 查看详情

Django 日期时间字段

】Django日期时间字段【英文标题】:DjangoDateTimeField【发布时间】:2012-02-2717:17:02【问题描述】:我的模型中有一个字段published_on=models.DateTimeField()在Django模板页面上,我只想显示日期而不是日期和时间。知道如何在django模型表单... 查看详情