Django

2009-07-28 5 views
5

में कई से एक रिश्ते को प्रबंधित करने के लिए कैसे मैं एक से अधिक रिश्तों को बनाने की कोशिश कर रहा हूं और व्यवस्थापक पैनल के माध्यम से इसे नियंत्रित करने में सक्षम होना चाहता हूं (add -remove आदि)। तो यह मेरा मॉडल.py:Django

from django.db import models 

class Office(models.Model): 
    name = models.CharField(max_length=30) 


class Province(models.Model): 
    numberPlate = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=20) 
    office = models.ForeignKey(Office) 

मैं चाहता हूं कि मेरा मॉडल एक प्रांत को कई कार्यालयों की अनुमति दे।

तो मेरी admin.py अंदर:

class ProvinceCreator(admin.ModelAdmin): 
     list_filter = ['numberPlate'] 
     list_display = ['name', 'numberPlate','office'] 

class OfficeCreator(admin.ModelAdmin): 
     list_display = ['name'] 

यह मेरे लिए सही लगता है, लेकिन जब मैं व्यवस्थापक पैनल के साथ एक नया प्रांत को जोड़ने का प्रयास है, मैं इस मिल:

TemplateSyntaxError at /admin/haritaapp/province/ 

Caught an exception while rendering: no such column: haritaapp_province.office_id 

धन्यवाद

उत्तर

6

यह तेजी से आप अपने मॉडल सेटअप पीछे की ओर है। यदि आप चाहते हैं कि प्रांत में कई कार्यालय हों, तो प्रांत कार्यालय मॉडल में एक विदेशी कुंजी होना चाहिए। ": Haritaapp_province.office_id ऐसी कोई कॉलम", जब आप एक नया जोड़ने

from django.db import models 

class Province(models.Model): 
    numberPlate = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=20) 

class Office(models.Model): 
    name = models.CharField(max_length=30) 
    province = models.ForeignKey(Province) 

यह एक-से-कई relationsship

त्रुटि है कि आप हो रही है के रूप में लागू करने के लिए सरल और बहुत सहज ज्ञान युक्त तरीका होगा मॉडल (आपके केस ऑफिस में) मॉडल में, आपको या तो मैन्युअल रूप से तालिका में कॉलम जोड़ना चाहिए। या तालिका ड्रॉप और syncdb को फिर से चलाने:

python manage.py syncdb 

Django नहीं स्वचालित रूप से नए कॉलम तालिका में जब आप मॉडल के लिए नए क्षेत्रों को जोड़ने के जोड़ देगा।

+0

अंत में मैं इसे काम कर सकता हूं, यहां तक ​​कि "पायथन प्रबंधन.py सिंकडीबी" पर्याप्त नहीं होगा इसलिए मुझे sqlite3 डीबी को हटाना होगा और इसे फिर से प्राप्त करना होगा :) एक छोटा सवाल यह है कि विदेशी आइटम प्रांत_बोजेक्ट के रूप में चयन/जोड़ते समय दिखाए जाते हैं। इसे कैसे ठीक करें ताकि यह इसके बजाय नाम प्रदर्शित कर सके? सादर –

+0

ओह स्वयं संपादित करें: \t डीईएफ़ __unicode __ (स्वयं): \t वापसी self.name मेरे लिए काम किया है: "Django स्वचालित रूप से नए कॉलम जोड़ नहीं होगा" करने के लिए रेफरी में पी –

+0

- Django दक्षिण एक अच्छा काम करता है ऑटो-मैनेजिंग मॉडल में बदलावों की हालांकि मैं चाहता हूं कि प्रवासन नामकरण योजना अधिक बहु-देवतापूर्ण मित्रवत हो। – David

1

क्या आपने इनलाइनों के लिए दस्तावेज़ों को देखा है?

अपने admin.py में

class Office(admin.TabularInline): 
    model = Office 

class ProvinceAdmin(admin.ModelAdmin): 
    inlines = [ 
     Office, 
    ]