Python 什么时候在Django模型中使用_ustr__;方法?
我创建了一个具有以下属性的Django模型Python 什么时候在Django模型中使用_ustr__;方法?,python,sql,django,django-models,jinja2,Python,Sql,Django,Django Models,Jinja2,我创建了一个具有以下属性的Django模型 class Info(models.Model): number = models.IntegerField() ID = models.IntegerField() reading = models.IntegerField() date = models.DateField() 我希望这样,当用户从数据库中搜索“ID”或“编号”时,他们会显示日期和读数。以下是我在views.py中的搜索结果代码: class Se
class Info(models.Model):
number = models.IntegerField()
ID = models.IntegerField()
reading = models.IntegerField()
date = models.DateField()
我希望这样,当用户从数据库中搜索“ID”或“编号”时,他们会显示日期和读数。以下是我在views.py中的搜索结果代码:
class SearchResultsView(ListView):
model = Info
template_name = 'search_results.html'
def get_queryset(self):
query = self.request.GET.get('q')
reading_list = Info.objects.filter(
Q(ID__icontains=query) | Q(number__icontains=query)
)
return reading_list
这是我的search_results.html模板:
<h1>Search Results</h1>
<ul>
{% for reading in reading_list %}
<li>
{{ reading.reading }}, {{ reading.date }}
</li>
{% endfor %}
</ul>
搜索结果
{%用于读取列表%}
-
{{reading.reading},{{reading.date}
{%endfor%}
对于是否应该在模型中包含“str”方法,我有点困惑。应用程序能否仅使用此代码打印日期和读数?每当在Django中创建模型实例时,它会将对象显示为ModelName对象(1)。要使用此代码更改Django模型,请
def __str__(self):
return str(self.id) #if its integer, make it str
return self.name #if its already str. you dont make it str
它将显示名称从ModelName对象(1)更改为管理面板中的def\uu str\uuu(self):
字段名。
对于Python3和Python2,有一件事是
def\uu str\uuuuuuuuuuuuuuself)
基于当前设置,不需要在模型中添加\uuuuuuuuuuuuuuuuuuuuuuuuuu
函数,因为您使用的是实例的字段,而不是实例本身
但是,如果存在对实例本身的任何引用,例如此模型的外键,或者您只想检查实例本身,则添加\uuu str\uu
函数将增加可读性。您可以查看详细信息
如果没有\uuuu str\uuuu
字段,如果您有一个Info实例,您将有:
。例如,在添加\uuuu str\uuuu
函数并返回str(id)后,您将看到
如果您想添加\uu str\uu
函数,最好在您的信息模型中有一个CharField(例如description=models.CharField()
)。那么这个对象的表示将是