如何仅显示django模型中的非空或非空字段?

时间:2018-01-31 22:26:21

标签: python django django-models django-templates

我有一个名为Address的模型,它有大约7个不同的字段。此模型的相应表单是完全可选的,用户可以填写所有7个字段或仅填写1个字段或不填写任何字段。这里没有必填字段。

现在,如果用户只填写了城市和国家/地区字段,那么我的类方法中如何只获取这些字段,然后在模板中正确显示?

这是我最接近实现我想要的目标:

class Address(models.Model):
    address_name = models.CharField(...)
    line1 = models.CharField(...)
    line2 = models.CharField(...)
    line3 = models.CharField(...)

    city = models.CharField(...)
    state = models.CharField(...)
    zipcode = models.CharField(...)

    country = models.CharField(...)
    def get_fields(self):
        values = []
        for field in Address._meta.fields:
            if field.name in ('line1', 'line2', 'line3', 'city', 'state',
                              'postcode', 'country'):
                if field.value_to_string(self):
                    values.append(field.value_to_string(self))
       return values

在我的模板中:

{% for field in address.get_fields %}
    {{field}}{% if not forloop.last %}, {% else %}.{% endif %}
{% endfor %}

现在这几乎达到了我想要的水平,但在其中一个测试案例中,如果只填写了一个字段(例如:只填写了国家/地区),则打印出来:

, US.

如何让它只说US。基本上,我想要的地址格式是:

{{line1}}, {{line2}}, {{line3}}, {{state}} - {{zipcode}}, {{country}}.

我的模型目前的方式是否可以实现这种格式化?我甚至尝试在每个变量之前使用{% if %},但是,再一次,逗号不会很好。我有什么选择?

0 个答案:

没有答案