2010-11-29 15 views
7

से जेनेरिक_इनलाइनफॉर्मसेट_फैक्टरी का उपयोग करके फ़ॉर्म बनाना, मैं मॉडलफॉर्म की सहायता से एक संपादन फ़ॉर्म बनाना चाहता था।मॉडल फॉर्म

और मेरे मॉडल में जेनेरिक रिलेशन बी/डब्ल्यू कक्षाएं होती हैं, इसलिए अगर कोई मुझे इस उद्देश्य के लिए दृश्य और थोड़ा टेम्पलेट सुझा सकता है तो मैं बहुत आभारी हूं, क्योंकि मैं भाषा में नया हूं। अगर कोई मुझे एक लिंक या तो सुझाव है कि सकता है

class Employee(Person): 
    nickname = models.CharField(_('nickname'), max_length=25, null=True, 
     blank=True) 
    blood_type = models.CharField(_('blood group'), max_length=3, null=True, 
     blank=True, choices=BLOOD_TYPE_CHOICES) 
    marital_status = models.CharField(_('marital status'), max_length=1, 
     null=True, blank=True, choices=MARITAL_STATUS_CHOICES) 
    nationality = CountryField(_('nationality'), default='IN', null=True, 
     blank=True) 
    about = models.TextField(_('about'), blank=True, null=True) 
    dependent = models.ManyToManyField(Dependent, 
     through='DependentRelationship') 
    pan_card_number = models.CharField(_('PAN card number'), max_length=50, 
     blank=True, null=True) 
    policy_number = models.CharField(_('policy number'), max_length=50, 
     null=True, blank=True) 
    # code specific details 
    user = models.OneToOneField(User, blank=True, null=True, 
     verbose_name=_('user')) 

class Person(models.Model): 
     """Person model""" 
     title = models.CharField(_('title'), max_length=20, null=True, blank=True) 
     first_name = models.CharField(_('first name'), max_length=100) 
     middle_name = models.CharField(_('middle name'), max_length=100, null=True, 
      blank=True) 
     last_name = models.CharField(_('last name'), max_length=100, null=True, 
      blank=True) 
     suffix = models.CharField(_('suffix'), max_length=20, null=True, 
      blank=True) 
     slug = models.SlugField(_('slug'), max_length=50, unique=True) 


class PhoneNumber(models.Model) : 
    phone_number = generic.GenericRelation('PhoneNumber') 
    email_address = generic.GenericRelation('EmailAddress') 
    address = generic.GenericRelation('Address') 

    date_of_birth = models.DateField(_('date of birth'), null=True, blank=True) 
    gender = models.CharField(_('gender'), max_length=1, null=True, 
     blank=True, choices=GENDER_CHOICES) 

    content_type = models.ForeignKey(ContentType, 

-:

मेरे मॉडल की तरह लग रहे। यह एक बड़ी मदद होगी ........

उत्तर

16

मुझे पता चला समाधान पोस्टिंग। Generic_inlineformset_factory के स्रोत को देखने के बाद।

मैं मेरे विचार किया जाता है: -

def edit_contact(request): 
    c={} 
    profile = request.user.get_profile() 
    EmployeeFormSet = generic_inlineformset_factory(PhoneNumber,extra=0,can_delete=False) 
    EmployeeFormSet1=generic_inlineformset_factory(EmailAddress,extra=0,can_delete=False) 
    EmployeeFormSet2 = generic_inlineformset_factory(Address, extra = 0, can_delete=False) 
    if request.method == "POST": 
     p_formset = EmployeeFormSet(data=request.POST, instance = profile), 
     e_formset = EmployeeFormSet1(data=request.POST, instance = profile), 
     a_formset = EmployeeFormSet2(data=request.POST, instance = profile), 
     for e in p_formset: 
      if e.is_valid(): 
      e.save() 
     for e in e_formset: 
      if e.is_valid(): 
       e.save() 
     for e in a_formset: 
      if e.is_valid(): 
       e.save() 
     return HttpResponseRedirect('/forms/sucess-edit/') 
     else: 
      p_formset = EmployeeFormSet(instance = profile), 
      e_formset = EmployeeFormSet1(instance = profile), 
      a_formset = EmployeeFormSet2(instance = profile), 
     c.update({'p_formset': p_formset, 'e_formset': e_formset,'a_formset': a_formset}) 
     return render_to_response('forms/edit_contact.html',c, 
            context_instance=RequestContext(request)) 

यह सफलतापूर्वक काम किया, मुझे लगता है कि यदि कोई अपने मॉडल में जेनेरिक रिलेशन उपयोग कर रहा है यह एक अच्छा मदद हो सकता है, और संपादन के लिए एक फार्म का निर्माण करना चाहते वह जानकारी।

+0

अंत में, जेनेरिक_इनलाइन_फॉर्मसेट_फैक्टरी का उपयोग करने का एक उदाहरण। यह वास्तव में मेरी मदद की! आपका उत्तर पोस्ट करने के लिए धन्यवाद। – Brandon

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