2015-11-14 50 views
2

嘿,夥計們我是Django和Stuck中的一些新手。 做了一個項目名稱「singup」,並在我的模型中添加了「smart_unicode實用程序」,但不幸的是,在我的管理站點中,我沒有看到任何更改。我想將每個存儲的註冊作爲電子郵件進行調用。幫助需要請 這裏是我的models.py文件:smart_unicode不能在我的Django項目中工作

from django.db import models 
from django.utils.encoding import smart_unicode 
# Create your models here. 
class signup(models.Model): 
    first_name=models.CharField(max_length=12,null=False,blank=False) 
    last_name=models.CharField(max_length=12,null=False,blank=False) 
    email=models.EmailField(max_length=60,null=False,blank=False) 
    timestamp=models.DateTimeField(auto_now_add=True,auto_now=False) 
    updated=models.DateTimeField(auto_now_add=False,auto_now=True) 


def __unicode__(self): 
    return smart_unicode(self.email) 

這裏是我的admin.py

from django.contrib import admin 

# Register your models here. 
from models import signup 

class signupAdmin(admin.ModelAdmin): 
    class Meta: 
     model=signup 
admin.site.register(signup,signupAdmin) 

這是我的聯繫網站的形象。

enter image description here

回答

1

方法的名稱應該是__unicode__。有兩個下劃線,而不是單個。

def __unicode__(self): 
    return smart_unicode(self.email) 

爲Python 2

def __str__(self): 
     return smart_unicode(self.email) 

所以完整的代碼應該是

class signup(models.Model): 
    first_name=models.CharField(max_length=12,null=False,blank=False) 
    last_name=models.CharField(max_length=12,null=False,blank=False) 
    email=models.EmailField(max_length=60,null=False,blank=False) 
    timestamp=models.DateTimeField(auto_now_add=True,auto_now=False) 
    updated=models.DateTimeField(auto_now_add=False,auto_now=True) 


    def __str__(self): 
     return smart_unicode(self.email) 
+1

它不工作。你有另一種解決方案嗎? –

+0

@BlackUser你使用的是Python 2嗎? – utkbansal

+1

@Basal是啊我使用python 2.7 –

0

同樣的問題我面臨的話,我意識到,我的最後一個塊的缺口是不正確的。

看看你在這裏粘貼其顯示相同的代碼,只是給一個標籤或4位爲「高清的unicode(個體經營):」和不改變任何東西,因爲它會工作,我敢肯定它的工作形成我

它應該是下類,那麼它會很好地工作:

from django.db import models 
from django.utils.encoding import smart_unicode 
# Create your models here. 
class signup(models.Model): 
    first_name=models.CharField(max_length=12,null=False,blank=False) 
    last_name=models.CharField(max_length=12,null=False,blank=False) 
    email=models.EmailField(max_length=60,null=False,blank=False) 
    timestamp=models.DateTimeField(auto_now_add=True,auto_now=False) 
    updated=models.DateTimeField(auto_now_add=False,auto_now=True) 

    def __unicode__(self): 
     return smart_unicode(self.email) 

因爲這種方法DEF「的unicode」屬於類註冊,而當你把「高清的unicode」在零縮進阻止它與註冊類相關聯,併成爲獨立的方法,因此將此註冊類從管理部分的返回類作爲對象調用。但是當你在第一縮進級別的類註冊的屋頂下放置「def unicode」方法。它屬於註冊並返回統一碼,字符作爲電子郵件。

相關問題