📅  最后修改于: 2023-12-03 14:49:36.985000             🧑  作者: Mango
在 Django 中,模型类是用于定义数据库中数据结构与数据操作的一个重要组件。在使用模型类时,往往需要在对象实例化后访问该对象的各个属性,以获取或修改相关的数据信息。但是,如果直接打印一个对象,则默认输出的是该对象在内存中的引用地址,这样往往不能准确地反映该对象所代表的意义。因此,我们需要通过 __str__
函数来定义对象的显示名称。本文将介绍如何在 Django 模型类中使用 __str__
函数来更改对象的显示名称。
__str__
函数?__str__
函数是 Python 中的一种特殊方法,用于定义一个对象的字符串表示。它在类被实例化后自动调用,返回一个字符串类型的值。当我们尝试将一个对象打印输出到控制台或其他地方时,会默认调用该函数来生成该对象的字符串表示。因此,定义一个好的 __str__
函数可以让我们更方便地查看和调试对象。
例如,下面是一个简单的 Python 类:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person('Tom', 18)
print(person) # <__main__.Person object at 0x7f461c59f220>
可以看到,如果我们直接打印一个 Person
类对象,输出的只是该对象在内存中的引用地址,并不能准确地反映该对象所代表的意义。因此,我们需要通过 __str__
函数来定义一个更好的字符串表示:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return 'Person(name={}, age={})'.format(self.name, self.age)
person = Person('Tom', 18)
print(person) # Person(name=Tom, age=18)
可以看到,现在我们通过重载了 __str__
函数,输出的字符串更加准确地反映了 person
对象所代表的含义。
__str__
函数类似于普通的 Python 类,我们也可以在 Django 模型类中使用 __str__
函数来自定义对象的显示名称。例如,假设我们有一个 Django 模型类 Book
,它表示一本书:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
price = models.DecimalField(max_digits=8, decimal_places=2)
如果我们直接打印一个 Book
对象,输出的只是该对象在内存中的引用地址,这样对于我们来说并没有太多的用处。因此,我们需要通过定义 __str__
函数来改变输出结果:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
price = models.DecimalField(max_digits=8, decimal_places=2)
def __str__(self):
return 'Book(title={}, author={}, price={})'.format(self.title, self.author, self.price)
现在,当我们打印一个 Book
对象时,输出结果会是这样的:
book = Book(title='Python Django Manual', author='John Smith', price=10.99)
print(book) # Book(title=Python Django Manual, author=John Smith, price=10.99)
可以看到,重载了 __str__
函数后输出的字符串更加直观地反映了 book
对象所代表的数据信息。
使用 __str__
函数可以更改 Django 模型的对象显示名称,使得打印输出更加直观,便于查看和调试程序。在 Django 模型类中,只需要简单定义一个 __str__
函数即可完成这个过程。