0

ForiegnKeyによってリンクされている2つのモデルがあり、django-crispy-formsを使用して、フォームのPhoneNumberモデルのフィールドを使用したいと思います。

私が試したのは、構文'phone_number__number'を使用することですが、フォームに空のドロップダウンリストしか表示されません。

これが私のモデルです。この投稿のCustomerモデルからphone_number以外はすべて削除されています。

class Customer(models.Model):
  phone_number = models.ForeignKey(PhoneNumber)

class PhoneNumber(models.Model):
  TYPES = (
      ('Cell', 'Cell'),
      ('Home', 'Home'),
      ('Fax', 'Fax'),
      ('Work', 'Work'),
  )
  primary = models.BooleanField(default=False)
  phone_type = models.CharField(max_length=30, choices=TYPES, default='Cell')
  number = models.CharField(max_length=15)

そして、phone_numberフィールドのみを含む私のフォーム:

class CustomerCreateForm(forms.ModelForm):
 '''
 Base form for creating customers
 '''
 def __init__(self, *args, **kwargs):
     self.helper = FormHelper()
     self.helper.layout = Layout(
         Fieldset(
             'Personal Information',
             'phone_number__number',
         ),
         FormActions(
             Submit('submit' , 'Submit' , css_class='btn btn-success'), 
             Button('cancel' , 'Cancel' , css_class='btn btn-warning', onclick='javascript:history.go(-1);'), 
         )
     )
     super(CustomerCreateForm, self).__init__(*args, **kwargs)

 class Meta:
     model = Customer
     exclude = (
         'create_user',
         'modify_user'
     )
4

1 に答える 1

1
from yourapp.models import PhoneNumber    

class CustomerCreateForm(forms.ModelForm):
    '''
    Base form for creating customers
    '''
    def __init__(self, *args, **kwargs):
        self.helper = FormHelper()
        self.helper.layout = Layout(
            Fieldset(
                'Personal Information',
                'phone_number',
            ),
         FormActions(
             Submit('submit' , 'Submit' , css_class='btn btn-success'), 
             Button('cancel' , 'Cancel' , css_class='btn btn-warning', 
                    onclick='javascript:history.go(-1);'), 
             )
         )
         super(CustomerCreateForm, self).__init__(*args, **kwargs)
         self.fields["phone_number"].choices = \
         [(item.number, item.number) for item in PhoneNumber.objects.all()]

         class Meta:
             model = Customer
             exclude = (
                 'create_user',
                 'modify_user'
             )
于 2012-11-18T20:07:46.803 に答える