1

django ユーザーを拡張したので、今すぐ登録フォームを作成する必要があります。

ほとんどのことは理解できましたが、登録時に不要なフィールドを除外する方法がわかりません。登録フォームにすべてのフィールドが表示されます。

コードは次のとおりです。

models.py

class Artist(Model):
    user = OneToOneField(User, unique=True)
    address = CharField(max_length=50)
    city = CharField(max_length=30)
    ustid = CharField(max_length=14)
    date_of_birth = DateField()
    bio = CharField(max_length=500)
    def __unicode__(self):
        return self.user.get_full_name()

User.profile = property(lambda u: Artist.objects.get_or_create(user=u)[0])

フォーム.py

class RegistrationForm(UserCreationForm):
    class Meta:
        model = User

    def __init__(self, *args, **kwargs):
        super(RegistrationForm, self).__init__(*args, **kwargs)
        artist_kwargs = kwargs.copy()
        if kwargs.has_key('instance'):
            self.artist = kwargs['instance'].artist
            artist_kwargs['instance'] = self.artist
        self.artist_form = ArtistForm(*args, **artist_kwargs)
        self.fields.update(self.artist_form.fields)
        self.initial.update(self.artist_form.initial)

    def clean(self):
        cleaned_data = super(RegistrationForm, self).clean()
        self.errors.update(self.artist_form.errors)
        return cleaned_data

    def save(self, commit=True):
        self.artist_form.save(commit)
        return super(RegistrationForm, self).save(commit)

フィールドを除外するにはどうすればよいですか?

4

2 に答える 2

0
class Meta:
    model = User
    exclude = ('bio',)
于 2013-04-24T17:20:25.157 に答える
0

メタ モデルのメンバーではないフィールドを含めたり除外したりすることはできません。

できることは、それぞれのフォームでそれを行うことです。この場合、UserCreationFormは によって拡張されますArtistForm。適切なメタ モデルに属するフォーム内のフィールドを制限するだけです。

于 2013-04-24T20:39:10.803 に答える