Django models 从对象查询返回标点正确的字符串
在我的django应用程序中,特别是在管理端,我对我的模型执行了一些def操作:Django models 从对象查询返回标点正确的字符串,django-models,Django Models,在我的django应用程序中,特别是在管理端,我对我的模型执行了一些def操作: def get_flora(self): return self.flora.all() def targeted_flora(self): return u"%s" % (self.get_flora()) 然而,flora是一个众多的领域,有时也会使用外来的关键领域 我这样做是为了为模型提供一个实用程序“get”函数,然后第二个def是为django admin提供一个更友好的字段名来填充表
def get_flora(self):
return self.flora.all()
def targeted_flora(self):
return u"%s" % (self.get_flora())
然而,flora是一个众多的领域,有时也会使用外来的关键领域
我这样做是为了为模型提供一个实用程序“get”函数,然后第二个def是为django admin提供一个更友好的字段名来填充表格/列表视图
也许这里有两个问题:
1这是做这些事情的好工作流程/方法吗
2admin中的结果字符串输出类似于:
[<Species: pittosporum>, <Species: pinus radiata>]
或者,如果有三个
pittosporum, pinus radiata & erharta ercta
非常感谢 听起来你想要这样的东西:
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]
顺便说一句:
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''
好极了!干得好,谢谢你。。。只需要在“else”之后添加一个“:”,对-我在答案中修复了它…:)
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''