Thursday 15 August 2013

python - Using one form for two similar models -


मेरे पास निम्न मॉडल हैं:

  वर्ग BaseAddress (models.Model): name = models.CharField (MAX_LENGTH = 100) BUSINESS_NAME = models.CharField (MAX_LENGTH = 100, खाली = सच, अशक्त = सच) पता = models.CharField (MAX_LENGTH = 100, खाली = सच, अशक्त = सच) address_2 = models.CharField ( शहर = मॉडल। सीएचएफ़िल्ड (अधिकतम_लांबी = 100, रिक्त = सत्य, शून्य = सत्य) राज्य = अधिकतम = 1 = 100, रिक्त = सत्य, शून्य = सत्य) address_3 = models.CharField (max_length = 100, रिक्त = सत्य, शून्य = सत्य) models.CharField (MAX_LENGTH = 2, खाली = सच, अशक्त = सच) ZIP_CODE = models.CharField (MAX_LENGTH = 10, खाली = सच, अशक्त = सच) फोन = models.CharField (MAX_LENGTH = 30, खाली = सच, अशक्त = यह सच है) वर्ग मेटा: सार = सच वर्ग ProfileBilling (BaseAddress): प्रोफ़ाइल = models.OneToOneField (प्रोफाइल, related_name = 'billing_info') वर्ग OrderBilling (BaseAddress): आदेश = models.OneToOneField (आदेश, related_name = 'बिलिंग') name_on_card = मॉडल। चियरफिल्ड (अधिकतम_लांबी = 100) # कार्ड_टाइप = मॉडल। पॉजिटिव mallIntegerField (# विकल्प = CARD_TYPE, डिफ़ॉल्ट = 0) #card_number = models.CharField (# MAX_LENGTH = 16, डिफ़ॉल्ट = 0) expire_month = models.PositiveSmallIntegerField (विकल्प = महीने, अशक्त = सच, डिफ़ॉल्ट = 0) expire_year = models.PositiveSmallIntegerField (विकल्प = YEARS, शून्य = सत्य, डिफ़ॉल्ट = 1 9 60)   

जब ग्राहकों को बिलिंग पता इनपुट होता है, तो मैं इसे ऑर्डर बिलींग में सहेजना चाहता हूं, लेकिन मैं भी इसे ProfileBilling में सहेजना चाहता हूँ सबसे हालिया बिलिंग पता मैं ऐसा कैसे करूं?

जब मैं ऑर्डर बिलिंग और प्रोफाइल बिलिंग में अधिक से अधिक समान फ़ील्ड रखता हूं ...?

मैं बिलिंग पते को दो अलग-अलग तालिकाओं में सहेजने के लिए कैसे उपयोग करूं? मैं यह कैसे Django में कर सकता हूं?

यह मेरा ऑर्डर बिलिंग फॉर्म है:

  वर्ग OrderBillingForm (forms.ModelForm): क्लास मेटा: मॉडल = आदेशबिलिंग बहिष्करण = ('आदेश ',) डीईएफ़ __इनट __ (स्वयं, * एल्ग्स, ** क्वार्ज): सुपर (ऑर्डर बीलिंगफार्म, स्वयं) .__ init __ (* आर्ग्स, ** क्वार्ज) स्वयं। फ़ील्ड [' पता ']। आवश्यक = सच स्व। फ़ील्ड [' शहर '] .required = सच self.fields [' राज्य '] = USStateField () self.fields [' ZIP_CODE '] = us.USZipCodeField () self.fields [' फोन ']। आवश्यक = झूठी self.fields [' expire_month '] .required = False self.fields [' expir_year ']। आवश्यक = गलत def साफ (स्व): वापस स्वयं। स्केलिडे_डेटा    

आप सेव () विधि को ओवरराइड कर सकते हैं, लेकिन आपके मामले में स्मार्ट तरीके से इस प्रयोजन के लिए संकेत का उपयोग किया जाएगा।

OrderBilling सहेजा गया, आप अपने डेटा को प्रोफाइल बिलिंग में भी सहेज सकते हैं।

पोस्ट_एसएवी संकेत से परिचित होने के मामले में Google खोज पर कुछ उदाहरण को देखो,

जैसे:

  • आदि ...

    फिर आसानी से अपने पोस्ट_एसएव रिसीवर में | कॉलबैक Funcstion को ऑर्डर बिलिंग उदाहरण प्राप्त करें

      orderbil_instance = kwargs ['instance']   

    और अपने डेटा से अपना प्रोफाइल बिलिंग बनायें संकेत रिसीवर पर कुछ ऐसा है

      ProfileBilling.objects.create (name = orderbil_instance.name, ....)   

    / P>

      def do_something (प्रेषक, ** kwargs): # OrderBilling उदाहरण प्राप्त करने के लिए जो अभी बचाया है orderbil_instance = kwargs ['उदाहरण'] # नई प्रोफाइल में बिलिंग को भरना ProfileBilling.Billing.objects.create (name = Orderbil_instance.name, ....)    

No comments:

Post a Comment