2013-04-20 4 views
19

मैं अपने models.pyDjango ट्यूटोरियल यूनिकोड

import datetime 
from django.utils import timezone 
from django.db import models 

# Create your models here. 
class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

    def __unicode__(self): 
     return self.question 

    def was_published_recently(self): 
     return self.pub_date >= timezone.now() - datetime.timedelta(days=1) 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

    def __unicode__(self): 
     return self.choice_text 

में निम्नलिखित है काम नहीं कर रहा लेकिन जब मैं

from polls.models import Poll, Choice 
Poll.objects.all() 

दर्ज मैं पोल नहीं मिलता है: क्या चल रहा है? लेकिन मतदान: पोल ऑब्जेक्ट

कोई विचार?

उत्तर

34

Django 1.5 अजगर 3 के लिए प्रयोगात्मक समर्थन है, लेकिन Django 1.5 tutorial 2.x पायथन के लिए लिखा है:

इस ट्यूटोरियल Django 1.5 और अजगर 2. x के लिए लिखा है यदि Django संस्करण मेल नहीं खाता है, तो आप Django के अपने संस्करण के लिए ट्यूटोरियल का संदर्भ ले सकते हैं या Django को नवीनतम संस्करण में अपडेट कर सकते हैं। यदि आप पाइथन 3.x का उपयोग कर रहे हैं, तो ध्यान रखें कि आपके कोड को ट्यूटोरियल में जो कुछ भी है, उससे अलग होना पड़ सकता है और आपको केवल ट्यूटोरियल का उपयोग करना जारी रखना चाहिए यदि आप जानते हैं कि आप पाइथन 3.x के साथ क्या कर रहे हैं।

अजगर 3 में, आप के बजाय एक __str__ विधि एक __unicode__ विधि परिभाषित करना चाहिए। वहाँ एक डेकोरेटर python_2_unicode_compatible जो आप कोड जो अजगर 2 में काम करता है और 3.

from __future__ import unicode_literals 
from django.utils.encoding import python_2_unicode_compatible 

@python_2_unicode_compatible 
class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

    def __str__(self): 
     return self.question 

लिखने के लिए अधिक जानकारी के लिए Porting to Python 3 डॉक्स में str और यूनिकोड तरीकों खंड देखें मदद करता है।

+0

मैं प्रत्येक टैब को सहेजने के लिए 4 रिक्त स्थान के साथ सभी सफेद जगहों को एक रेडिड वापस चला गया, खोल को फिर से शुरू नहीं किया। अभी भी –

+0

काम नहीं कर रहा है क्या इससे कोई फर्क नहीं पड़ता कि मैं किस पायथन का उपयोग कर रहा हूं? मुझे 3.2.3 –

+2

हां मिला है, जो इसे समझाता है। ऐसा इसलिए है क्योंकि आप पाइथन 3 का उपयोग कर रहे हैं। मेरा अद्यतन उत्तर देखें। – Alasdair

संबंधित मुद्दे