在Django中使用查询结果

时间:2015-12-07 20:13:56

标签: python django

我有一个以:

结尾的模型
def __str__(self): #python 3.3. is __str__
    a = str(self.name) +'<br>' + str(self.phone)+'<br>'+ str(self.email)
    return a

我这样做是为了在我的网站上的某个地方轻松填充表格单元格。但这不是我想要的其他方式。

所以在我看来,我试图通过尝试删除其他所有内容来仅显示self.name的内容。

allObj = LeadContact.objects.all()
for b in allObj:
  b.name = b.name[0:b.name.find('<br>')]

我收到了错误:

Exception Value: 'ClientContact' object has no attribute 'find'

我的问题是双重问题,我可以对对象执行哪种操作以及如何才能最好地解决此问题?

2 个答案:

答案 0 :(得分:1)

首先,您有错误,因为b.nameClientContact的对象,因此您无法使用find。您应首先执行str(self.name)并在其上应用find

但是,我不认为改变views.py中的输出是很方便的。快速方法是将当前__str__方法的主体移动到类中的另一个方法(称之为html_display)并从模板中调用该方法。

此外,将views.py中的html返回到模板并不是一个好习惯,您应该尽可能地将后端代码与前端代码分开。所以我建议为它创建一个django模板标签/过滤器。

答案 1 :(得分:1)

解决问题的最佳方法是创建一个新方法来生成html代码(而不是// Your bikes $Bikes = array(1, 2, 3, 4); // Rented bikes $Rented = array(2, 3); // Create a result array that we will fill as we loop $Available = array(); // Find the difference manually by looping foreach($Bikes as $Bike){ // If the bike isn't rented, add it to the Available array if(!in_array($Bike, $Rented)) array_push($Available, $Bike); } var_dump($Available); // should contain 1 and 4 )并在模板中调用它。

__str__留给基本的 -

__str__

所以你可以做类似的事情 -

def __str__(self):
    return self.name

然后在模板中调用此方法。