2016-07-26 13 views
0

私はdjangoのユーザーモデルの拡張の登録フォームを作成しようとしています。それは2つの関係を持ち、1つはUserAddressです。フォームには、User,UserDetailsAddressのすべてのフィールドが必要です。しかし、私は正しい見方と形を得るのに苦労しています。 UserDetailsModelFormFormViewと組み合わせると、UserAddressのフィールドは追加されません。Djangoの1対1の関係を1つの形式で

class User(AbstractBaseUser, PermissionMixin): 
    email = models.EmailField(unique=True) 


class UserDetails(model.Model): 
    date_of_birth = models.DateField() 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    address = models.OneToOneField(Address, on_delete=models.CASCADE) 

class Address(model.Model): 
    field = models.CharField(max_length=100) 
    field2 = models.CharField(max_length=100) 

フォームとこのようになります表示:

class UserRegistrationForm(ModelForm): 
    class Meta: 
     model = Orchestra 
     fields = '__all__' 

class UserRegistrationView(FormView): 
    form_class = UserRegistrationForm 
    template_name = 'users/register.html' 

<form action="" method="post"> 
    {% csrf_token %} 
    {{ form.as_table }} 
    <input type="submit" value="submit"> 
</form> 
+0

あなたのビューとフォームを投稿し、あなたがしたいことを正確に説明してください。「正しいビューとフォームを得るために苦労しています」は十分ではありません。 –

+0

私はビューとフォームを追加しました。これは私にcharfieldフィールドの代わりにユーザーのためのちょうど外国キー選択フィールドを与える – user6827

答えて

0

あなたはモデルクラスでユニコードまたはSTRメソッド宣言を逃しました。常に宣言する必要があります。 strはPython 3.x用であり、unicodeはPython 2.x用であることを忘れないでください。私はモデルごとに異なる形式を作成する必要がありました

def __unicode__(self): 
    return '%s %s' % (self.field1, self.field2)