我有一个名为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 %}
,但是,再一次,逗号不会很好。我有什么选择?