I was working on it last couple of days. Basically I came up with what Fabio's solution. Thanks Daniel for 'disabled' field comment as well.
On Saturday, March 26, 2016 at 8:49:17 AM UTC-4, Daniel Hepper wrote: > > Fabio, > > if you are using Django 1.9, you can use the newly introduced disabled > attribute on forms.Field, see > https://docs.djangoproject.com/ja/1.9/ref/forms/fields/#disabled > > On Tuesday, March 22, 2016 at 3:36:34 PM UTC+1, 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]> >> 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]. >>> 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/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/7342bff0-ddc5-4f6d-ab51-9a664a245d3c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

