__str__在python中的用法,在Python 2上的Django中使用__str __()方法

I am Learning Django using the Django project tutorial.

Since I use python 2.7 I am unable to implement the following in python 2.7:

from django.db import models

class Question(models.Model):

# ...

def __str__(self): # __unicode__ on Python 2

return self.question_text

class Choice(models.Model):

# ...

def __str__(self): # __unicode__ on Python 2

return self.choice_text

解决方案

To keep the code compatible between py2 and py3, a better way is to use the decorator python_2_unicode_compatible.

This way you can keep the str method:

from django.db import models

from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible

class Question(models.Model):

# ...

def __str__(self): # __unicode__ on Python 2

return self.question_text

@python_2_unicode_compatible

class Choice(models.Model):

# ...

def __str__(self): # __unicode__ on Python 2

return self.choice_text

Django provides a simple way to define str() and unicode() methods that work on Python 2 and 3: you must define a str() method returning text and to apply the python_2_unicode_compatible() decorator.

...

This technique is the best match for Django’s porting philosophy.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值