Python 什么时候在Django模型中使用_ustr__;方法?

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

我创建了一个具有以下属性的Django模型

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()
)。那么这个对象的表示将是