2012-12-24 13 views
6

मुझे अपने मॉडलों के भीतर घंटों के लिए विकल्प बनाने के तरीके से रोक दिया गया है।Django मॉडल विकल्प

अब तक मुझे मॉडल में मेरे अनुमोदित क्षेत्र के साथ समस्याएं आ रही हैं। मैं 3 विकल्पों में से 1 होने के लिए अनुमोदित होना चाहता हूं, लेकिन जो कुछ मैं प्राप्त करता हूं वह सभी तीन विकल्पों का एक झुकाव है।

from django.db import models 

# Create your models here. 
class directory(models.Model): 
    name = models.CharField(max_length="50") 

class listing(models.Model): 
    name = models.CharField(max_length="50") 
    directory = models.ForeignKey(directory) 
    birthday = models.DateField() 
    state = models.CharField(max_length="2") 
    owner = models.CharField(max_length="50") 
    approved = (
     (u'1', u'Awaiting'), 
     (u'2', u'No'), 
     (u'3', u'Yes'), 
    ) 

भी पक्ष सवाल:: लेकिन जब भी मैं मॉडल परिवर्तन करते हैं और दक्षिण के साथ स्कीमा विस्थापित करने की कोशिश मेरी कमांडलाइन फ्रीज होगा भीतर './manage.py खोल', मैं

>>> listing.objects.all()[0].approved 
((u'1', u'Awaiting'), (u'2', u'No'), (u'3', u'Yes')) 

मेरे मॉडल मिल ऊपर और माइग्रेटिंग स्कीमा खत्म नहीं होगा। यह क्यों ठंडा है के लिए कोई संभावित सुझाव? यह परिवर्तनों का पता लगा सकता है लेकिन उन्हें लागू करने के लिए कभी खत्म नहीं होगा। चूंकि यह कभी खत्म नहीं होता है, जब मैं परिवर्तन करने के लिए मॉडल पर क्लिक करता हूं, तो मैं अब व्यवस्थापक पैनल के माध्यम से अपने मॉडल तक नहीं पहुंच सकता, मैं पृष्ठ को कभी लोड नहीं कर सकता।

The order in which I run the commands are 
    ./manage.py convert_to_south myapp 
    ./manage.py schemamigration southtut --auto 
    ./manage.py migrate southtut (never progresses on this command after the first few lines appear) 
+1

आप शायद अपने आप प्रश्न में दूसरे भाग बारी बल्कि यह एक "पक्ष सवाल" बनाने से विषय पर बातें रखने के लिए, चाहिए: विकल्प एक वास्तविक क्षेत्र की एक विशेषता की जरूरत है। –

+0

मेरा सुझाव है कि मॉडल को ठीक करने के बाद आप फिर से दक्षिण माइग्रेशन आज़माएं। इसके अलावा, "myapp" को ऊपर "southtut" में बदलें क्योंकि मेरे जैसे अन्य लोग इस पर विचार करेंगे कि यह समस्या का हिस्सा है या नहीं। इसके अलावा, कक्षा के नाम CapWords बनाओ। शायद पाइथन पर पीईपी -8 दिशानिर्देश पढ़ें यदि आपने पहले से नहीं किया है: http://www.python.org/dev/peps/pep-0008/#class-names – tobych

उत्तर

17

approved के रूप में आप यह एक क्षेत्र नहीं है, यह केवल एक वर्ग के तीन विकल्प युक्त विशेषता है।

APPROVAL_CHOICES = (
    (u'1', u'Awaiting'), 
    (u'2', u'No'), 
    (u'3', u'Yes'), 
) 
approved = models.CharField(max_length=1, choices=APPROVAL_CHOICES) 
+0

क्या यह संभव हो सकता है यदि मेरा फ़ील्ड डेटाटाइप इसके बजाय पूर्णांक है CharField का? –

+2

हां, यह क्यों नहीं होगा? –

+0

धन्यवाद डैनियल, माफी, मैं Django के लिए बहुत नया हूँ। निम्नलिखित कोड मेरे लिए काम करता है और django admin UI अब मुझे एक ड्रॉपडाउन दिखाता है। सक्रिय = 0 निष्क्रिय = 1 स्थिति = ( (सक्रिय, 'सक्रिय'), (निष्क्रिय, 'निष्क्रिय'), ) वर्ग TemplateAddon (models.Model): स्थिति = models.IntegerField (डिफ़ॉल्ट = 0, विकल्प = स्थिति) –

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