2012-03-24 15 views
14

मैं Bussinesses नामक एक नया django ऐप (प्रोजेक्ट नहीं) बनाता हूं, फिर मॉड्यूल.py में निम्न श्रेणी जोड़ें।Django मॉडल के लिए तालिका के उपसर्ग को कैसे निकालें?

class Bussinesses(models.Model): 
    business_email = models.EmailField() 
    password = models.CharField(max_length=20) 
    contact_first_name = models.CharField(max_length=30) 
    contact_last_name = models.CharField(max_length=30) 

अगर मैं bussinesses सीधे, Django डेटाबेस में "bussinesses_bussinesses" तालिका को एक्सेस करेगी उपयोग करते हैं, यह स्पष्ट रूप से मौजूद नहीं है।

क्योंकि तालिका "bussinesses" का उपयोग किसी अन्य एपीपी द्वारा भी किया जाता है, इसलिए इसका नाम बदल नहीं सकता है। मैं जानना चाहता हूं कि टेबल उपसर्ग का उपयोग किये बिना Djano मॉडल का उपयोग कैसे करें, और मैं सीधे कच्चे डेटाबेस API का उपयोग नहीं करना चाहता हूं।

बहुत बहुत धन्यवाद।

उत्तर

35

बस model meta options का उपयोग करें।

class Bussinesses(models.Model): 
    business_email = models.EmailField() 
    password = models.CharField(max_length=20) 
    contact_first_name = models.CharField(max_length=30) 
    contact_last_name = models.CharField(max_length=30) 

    class Meta: 
     db_table = "bussinesses" 

BTW व्यवसायों गलत लिखा गया है। चूंकि आप तालिका का नाम निर्दिष्ट कर रहे हैं, इसलिए आपको अपने मॉडल को टेबल के समान नाम नहीं देना है, इसलिए यदि तालिका का नाम गलत वर्तनी है और आप इसे आसानी से ठीक नहीं कर सकते हैं, तो आप कम से कम नाम बदल सकते हैं व्यवसायों की उचित वर्तनी के लिए आपकी कक्षा। मैं बहुवचन से छुटकारा पाउंगा, और इसे class Business बना दूंगा। अंत में यह किसी असामान्य डेटाबेस पर Django या Rails का उपयोग करते समय असामान्य नहीं है, प्रत्येक तालिका के लिए कस्टम तालिका नाम सेट करने की आवश्यकता है।

+1

आपका स्वागत है। प्रबंधित संपत्ति पर mgibsonbr की नोक भी एक अच्छी है, और आपके ऐप को विकसित करने में उपयोगी हो सकती है। –

2

आप db_table संपत्ति का उपयोग कर मॉडल की मेटा कक्षा में तालिका नाम निर्दिष्ट कर सकते हैं,।

इसके अलावा, यदि आप पहले से मौजूद डेटाबेस तालिका का उपयोग कर रहे हैं, तो आप managed संपत्ति पर भी एक नज़र डालना चाहेंगे। अप्रबंधित syncdb पर मॉडल सेट करने के बाद इसे प्रभावित नहीं किया जाएगा (उदाहरण के लिए, यदि आप अपना ऐप रीसेट करते हैं), लेकिन आप अभी भी Django के ORM का सामान्य रूप से उपयोग कर सकते हैं।

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