Django字段在管理员中是空白的,但不在常规站点上

时间:2015-09-12 19:18:21

标签: django django-models django-forms

我有以下两种形式:

class ProfileUser(SimpleProfileUser):
    photo = PhotoField(verbose_name=_('photo'))

class Client(ProfileUser):
    can_be_seen = models.BooleanField(_('can be seen by other members'), default=True)

    def __init__(self, *args, **kwargs):
        Client._meta.get_field('phone').blank = True

我基本上有两种类型的成员。 我已经制作了普通的班级档案,照片不是空的。

但是,在Client类中,我想接受照片的空值。

这在管理员中非常有效,但在常规网站上无效。

我该如何解决?

表格代码是:

class CommonClientForm(forms.ModelForm):
    """This form for gathering common features in both admin and member forms
    """

    class Meta:
        model = Client
        fields = '__all__'

    full_location = MarkerLocationField(*[Meta.model._meta.get_field(key)
                                          for key in ['latitude', 'longitude', 'location']], label=_('Location'))

    def __init__(self, *args, **kwargs):
        individual_attrs = kwargs.pop('individual_attrs', None)
        super(CommonClientForm, self).__init__(*args, **kwargs)
        self.fields['birthday'].widget = SelectDateWidget(individual_attrs=individual_attrs)
        if self.instance:
            self.initial['full_location'] = [self.instance.latitude, self.instance.longitude, self.instance.location]

1 个答案:

答案 0 :(得分:0)

如果我在课程定义之后(在它之外)写了Client._meta.get_field('phone').blank = True,那么它就可以了。

我认为原因是客户端字段在调用init之前初始化,而在调用init之后在admin中初始化。