2010-11-24 13 views
8

क्या ऐप को संशोधित किए बिना INSTALLED_APP में उपयोग किए गए मॉडल को फिर से परिभाषित करना संभव है? उदाहरण के लिए, django-basic-blog में एक पोस्ट मॉडल है जिसे मैं एक फ़ील्ड जोड़ना चाहता हूं। मैं सीधे django-basic-blog संपादित कर सकता हूं लेकिन कोड पोर्टेबिलिटी के लिए मैं इसके शीर्ष पर बनाना चाहता हूं। मैं subclass नहीं करना चाहता क्योंकि मैं पोस्ट मॉडल के सभी मौजूदा संदर्भों को संरक्षित करना चाहता हूं। अग्रिम में धन्यवाद!Django में स्थापित ऐप्स में परिभाषित मॉडल को ओवरराइड कैसे करें?

उत्तर

11
  1. आप उपवर्ग मूल क्षेत्रों अभी भी मूल तालिका में संग्रहीत किया जाएगा, ताकि संदर्भ मान्य रहना होता है।

  2. आप बंदर-पैच चाहते हैं एक मौजूदा वर्ग, जो ज्यादातर सिफ़ारिश लायक गंदा तरीका नहीं है, तो आप contribute_to_class कुछ models.py फ़ाइल है कि एक के बाद एक अनुप्रयोग में लोड किया जाएगा में इस्तेमाल कर सकते हैं आप बदलना चाहते हैं:

models.py:

from django.db.models import CharField 
from blog.models import Post 
CharField(max_length="100").contribute_to_class(Post, 'new_field') 

आप इसे इस तरह करते हैं, तो आप हमेशा जोखिम है कि अपने परिवर्तनों को कोड के अन्य हिस्सों के साथ और अपने कोड रेख करने में कठिन हो जाएगा संघर्ष कर सकते हैं नंगा है!

+0

महान उत्तर! अगर आप 1 के लिए एक उदाहरण प्रदान करते हैं तो मैं अच्छा होगा;); – Jannis

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