Fabio, I appreciate for your contribution. I understand the point that create a separate form with only readonly fields. However, I have a form has a mix of fields (readonly and editable) based on the user permission, not only one type of field. Also, When readonly field is defined by disabled=true, the field information doesn't get sent during the post.
On Tuesday, March 22, 2016 at 10:36:34 AM UTC-4, Fabio Caritas Barrionuevo da Luz wrote: > > > self.fields[name].widget.attrs['disabled'] = 'disabled' > self.fields[name].widget.attrs['readonly']=True > > is not make real readonly to field, because if user can edit the html on > client side, and remove disabled="disabled" and readonly input atributtes > > to problem of readonly fields, i currently use this: > > > https://github.com/luzfcb/django-simple-history/blob/wip-generic-views2/simple_history/forms.py > > > I prevent it here > https://github.com/luzfcb/django-simple-history/blob/wip-generic-views2/simple_history/forms.py#L24 > > Usage: > > class FooBar(models.Model): > foo = models.TextField(blank=True) > bar = models.TextField(blank=True) > > class MyFooBarForm(forms.ModelForm): > class Meta: > object = FooBar > fields = ('foo', 'bar') > > class MyReadOnlyBarForm(ReadOnlyFieldsMixin, forms.ModelForm): > readonly_fields = ('bar') > class Meta: > object = FooBar > fields = ('foo', 'bar') > > my_all_field_readonly_foobarForm = new_readonly_form_class(MyFooBarForm) > > my_foo_field_readonly_foobarForm = new_readonly_form_class(MyFooBarForm, > readonly_fields=('foo',)) > > > I do not know if this is the best approach, but it was what I got so far. > > > > > > On Tue, Mar 22, 2016 at 10:57 AM, Gorkem Tolan <[email protected] > <javascript:>> wrote: > >> Actually I do to set permission to each field. A field in the form can be >> viewable and editable, only viewable, or hidden. So if user has a >> permission to see the form, but edit some fields in the form, it gets very >> tricky especially for validation. >> For example I used these statements to make readonly field : >> self.fields[name].widget.attrs['disabled'] = 'disabled' >> self.fields[name].widget.attrs['readonly']=True >> Then the problem rises not to be able send disabled fields in the post. >> >> On Tuesday, March 22, 2016 at 9:31:43 AM UTC-4, bobhaugen wrote: >>> >>> Maybe you already know this, but you can do a lot of form tinkering in >>> __init__, like so: >>> >>> def __init__(self, permissions_parameter=None, *args, **kwargs): >>> super(FormName, self).__init__(*args, **kwargs) >>> if permissions_parameter: >>> #do a bunch of form tinkering >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/877bb8f8-4b59-4353-a0e5-99e95f55811b%40googlegroups.com >> >> <https://groups.google.com/d/msgid/django-users/877bb8f8-4b59-4353-a0e5-99e95f55811b%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Fábio C. Barrionuevo da Luz > Palmas - Tocantins - Brasil - América do Sul > > http://pythonclub.com.br/ > > Blog colaborativo sobre Python e tecnologias Relacionadas, mantido > totalmente no https://github.com/pythonclub/pythonclub.github.io . > > Todos são livres para publicar. É só fazer fork, escrever sua postagem e > mandar o pull-request. Leia mais sobre como publicar em README.md e > contributing.md. > Regra básica de postagem: > "Você" acha interessante? É útil para "você"? Pode ser utilizado com > Python ou é útil para quem usa Python? Está esperando o que? Publica logo, > que estou louco para ler... > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/58b69647-781e-4b22-b8ae-67ef7359a133%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

