我正在尝试使用计划列表填充表单。
这是我的计划模型的unicode
def __unicode__(self):
label = "ID: %s, Member(s): %s, Plan Type: %s" % (self.id, self.get_owners(), self.plan_type)
return unicode(label)
现在我调用get_owners,如下所示:
def get_owners(self):
owners = self.planmember_set.filter(ownership_type__code__in=["primary","joint"])
return owners
但我的输出显示:
[<PlanMember: Name, [membership_type]><PlanMember: Name, etc etc>]
如何在没有括号的情况下显示输出,以及更多内容:
Name [membership_type], Name [membership_type], etc
答案 0 :(得分:1)
您只是从get_owners
返回原始查询集,而Python正在调用repr()
以将其插入字符串中。
最好的办法是在get_owners
:
def get_owners(self):
owners = ...
return u", ".join(unicode(o) for o in owners)
答案 1 :(得分:0)
您的get_owners
方法正在做它应该做的事情:返回一组所有者。在您的模板中,您可以遍历这些所有者并显示它们,但是您喜欢:
{% for owner in plan.get_owners %}
{{ owner }}
{% endfor %}
或者,在其他python代码中,您可以根据需要将其组成一个字符串:
def __unicode__(self):
owners = u', '.join(self.get_owners())
label = "ID: %s, Member(s): %s, Plan Type: %s" % (self.id, owners, self.plan_type)
return unicode(label)
模型方法不应强制显示;他们应该只返回数据。 (除了明显的例外情况,例如__unicode__
,特别是关于如何将模型显示为unicode文本。)
答案 2 :(得分:0)
您似乎需要像__unicode__
一样向PlanMember
添加Plan
方法。
def __unicode__(self):
label = "Name: %s, [%s]" % (self.name, self.membership_type)
return unicode(label)