【问题标题】:Django: Want to display an empty field as blank rather displaying NoneDjango:想要将一个空字段显示为空白而不是显示无
【发布时间】:2011-09-28 21:06:46
【问题描述】:

我有一个名为 client_details.html 的模板,它显示 usernotedatetime。现在有时,客户可能没有用户、注释和日期时间的条目。如果这些字段为空,我的程序将改为显示 None。我不希望显示无。如果一个字段没有值,我不想看到任何值,例如如果可能,让它为空白,而不是显示 None。

views.py

@login_required
def get_client(request, client_id = 0):
    client = None
    try:
        client = models.Client.objects.get(pk = client_id)
    except:
        pass
    return render_to_response('client_details.html', {'client':client}, context_instance = RequestContext(request))

模板

{{client.datetime}}<br/> 
{{client.datetime.time}}<br/>  
{{client.user}}<br/>
{{client.note}}<br/>

【问题讨论】:

    标签: python django null


    【解决方案1】:

    你可以使用:

    {% if client %} {{client.user}} {% else %} &nbsp; {% endif %}
    

    检查 if 就足够了,所以如果你愿意,你可能不会被用户 else 阻止...

    【讨论】:

      【解决方案2】:

      使用内置的default_if_none 过滤器。

      {{ client.user|default_if_none:"&nbsp;" }}
      {{ client.user|default_if_none:"" }}
      

      【讨论】:

      • 还有default 过滤器,但default_if_none 更具体。但是,如果您正在处理这些事情的模型实例,那么一切都会发生同样的事情。
      【解决方案3】:

      这是一个奇怪的问题。 我有一个好主意。如果您想在显示时修改字段而不是在模板中检查,请在模型类中检查。

      ExampleModel(models.Model):
          myfield = models.CharField(blank=True, null = True)
      
          @property
          def get_myfield(self)
              if self.myfield:
                    return self.myfield
              else:
                    return ""
      

      直接在模板中使用它而不是字段。

       {{ExampleModel.get_myfield}}
      

      您以后无需更改模板即可更改此字段,只需修改您的属性即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多