Отправка экземпляра в ModelForm с настраиваемыми полями - PullRequest
0 голосов
/ 05 июля 2010

У меня есть форма для управления пользователями, тип ModelForm.Но для двух полей мне нужен RegexField для проверки моих данных.Из-за этого мне нужно было переопределить эти поля.Но теперь, когда я открываю форму в режиме редактирования (при отправке экземпляра моего пользователя), я не получаю данные, загруженные в оба поля.Как этого избежать?Должен ли я забыть о поле регулярных выражений и создать для них метод очистки custem?

class UserForm(forms.ModelForm):        
    pid = forms.RegexField(regex=r'^\d{11}', max_length=11 ,widget=forms.TextInput(attrs=dict(attrs_dict, maxlength=50)), error_messages=my_default_errors)
    code = forms.RegexField(regex=r'^\d{2}[-]\d{3}', max_length=6, widget=forms.TextInput(attrs=attrs_dict), label="Postal code", error_messages=my_default_errors)

    class Meta:
        model = UserProfile
        exclude = ( 'user', 'image', 'pid' , 'code')

модель:

class UserProfile(models.Model):
    def upload_path(self, field_attname):
        filename = hashlib.md5(field_attname).hexdigest()[:4] + "_" + field_attname
        return settings.MEDIA_ROOT + "/uploads/users/%s" % (filename,)
    first_name = models.CharField("Name", max_length=50, blank=True, null=True)
    last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
    pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
    street = models.CharField("Street", max_length=50, blank=True, null=True)
    number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
    code = models.CharField("Zip ", max_length=6, blank=True, null=True)
    city = models.CharField("City", max_length=50, blank=True, null=True)       
    user = models.ForeignKey(User, unique=True, related_name='profile')
    image = models.ImageField(upload_to=upload_path, verbose_name="Image", blank=True, null=True)

1 Ответ

0 голосов
/ 05 июля 2010

Вы устанавливаете новый тип поля, который является правильным, но затем исключаете их из обработки для модели, а это не так. Удалить их из Meta.exclude.

...