gpt4 book ai didi

django - 为什么 __unicode__ 不起作用而 __str__ 起作用?

转载 作者:行者123 更新时间:2023-12-04 03:08:12 24 4
gpt4 key购买 nike

我正在尝试通过自己开发一个网站来打破僵局,我从创建一些注册表页面并列出数据库记录开始。

我对 __unicode__ 的事实感到困惑方法不打印我的记录的用户名和 __str__做!

我知道使用 __unicode__是最好的做法,但我只能用 __str__ 打印我的对象用户名.

任何人都可以解释为什么会发生这种情况?

我的型号:

from django.db import models

class User(models.Model):
username = models.CharField(max_length=200)
reg_date = models.DateTimeField('registry date')

def __unicode__(self):
return self.username

我的 admin.py:
from django.contrib import admin
from registo.models import User

admin.site.register(User)

我的 __unicode__(self)输出:
User
User object

我的 __str__(self)输出:
User
Teste

提前感谢您的合作!

最佳答案

看起来您正在使用 Python3.x这是 relevant documentation on Str and Unicode methods

In Python 2, the object model specifies __str__() and __unicode__() methods. If these methods exist, they must return str (bytes) and unicode (text) respectively.

The print statement and the str() built-in call __str__() to determine the human-readable representation of an object. The unicode() built-in calls __unicode__() if it exists, and otherwise falls back to __str__() and decodes the result with the system encoding. Conversely, the Model base class automatically derives __str__() from __unicode__() by encoding to UTF-8.

In Python 3, there’s simply __str__(), which must return str (text).



所以

On Python 3, the decorator is a no-op. On Python 2, it defines appropriate __unicode__() and __str__() methods (replacing the original __str__() method in the process).

关于django - 为什么 __unicode__ 不起作用而 __str__ 起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com