1

我扩展了我的 django 用户,现在需要创建一个注册表单。

我已经弄清楚了大部分,但我不知道如何排除注册期间不需要的字段。知道我在注册表中看到所有字段。

这是代码:

模型.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 回答