在我的django应用程序中,特别是在管理员方面,我对我的模型进行了一些修改:
def get_flora(self):
return self.flora.all()
def targeted_flora(self):
return u"%s" % (self.get_flora())
虽然flora是ManyToManyField,但是,有时也会使用ForeignKey字段。
我这样做是为模型提供实用程序'get'函数,然后第二个def是为django admin提供一个更友好的字段名称来填充表格/列表视图。
这里可能包含两个问题: 1.这是做这些事情的好工作流程/方法吗? 2. admin中的结果字符串输出类似于:
[<Species: pittosporum>, <Species: pinus radiata>]
当然,但如何让它看起来像:
pittosporum & pinus radiata
或者,如果有三个;
pittosporum, pinus radiata & erharta ercta
非常感谢!
答案 0 :(得分:0)
听起来你想要这样的东西:
def targeted_flora(self):
names= [f.name for f in self.get_flora()] # or however you get a floras name
if len(names) == 1:
return names[0]
else:
return ', '.join(names[:-1]) + ' & ' + names[-1]
答案 1 :(得分:0)
这适用于btw:
def punctuated_object_list(objects, field):
if field:
field_list = [getattr(f, field) for f in objects]
else:
field_list = [str(f) for f in objects]
if len(field_list) > 0:
if len(field_list) == 1:
return field_list[0]
else:
return ', '.join(field_list[:-1]) + ' & ' + field_list[-1]
else:
return u''