Simon

Thank you. Yes I had thought that if/else was a last resort possibility. 
However, one of the nice features I wanted to retain is "Save as" to let a 
user copy the records. By the way there are many 1:1 and 1:n records 
connected to substance.

I haven't seen flatten_fieldsets before so I'll look at that.

Cheers

Mike

On Thursday, November 27, 2014 12:08:50 AM UTC+11, Simon Charette wrote:
>
> In order to make a model admin read only I suggest you make sure `
> get_readonly_fields() 
> <https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_readonly_fields>`
>  
> return all of them.
>
>
> from django.contrib.admin.utils import flatten_fieldsets
>
> def get_readonly_fields(request, obj=None):
>     # Put your business logic here to determine whether or not
>     # the whole model should be read-only based on request.user
>     # and obj.
>     return flatten_fieldsets(self.get_fieldsets(request, obj))
>
>
> Simon    
>
> Le mardi 25 novembre 2014 22:20:33 UTC-5, Mike Dewhirst a écrit :
>>
>> On 26/11/2014 11:59 AM, Mike Dewhirst wrote: 
>> > From the docs ... 
>> > 
>> > 
>> https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_change_permission
>>  
>> > 
>> > ... is working nicely except it just pops up a standard error page 
>> > 403 Forbidden when it returns False. 
>>
>>
>> Actually, I must have changed my code and refreshed an already rendered 
>> form when I thought it was working. Just clicking on the wrong model in 
>> the admin list pops up a 403 Forbidden page. It looks like 
>> ModelAdmin.has_change_permission() must return True to render the change 
>> form. 
>>
>> Maybe someone can tell me how to make a model read-only for certain 
>> users based on their relationship with the model? 
>>
>> To elaborate somewhat, a company owns a substance displayed on a page in 
>> the admin and any user should be able to see it but only users who are 
>> members of the same company may change or delete it. 
>>
>> Thanks 
>>
>> > 
>> > How can I intercept this in the Admin and treat it like an error 
>> > displayed like all the other validation errors generated from the 
>> > model.clean() method??? 
>> > 
>> > I'd like to raise a business rule violation exception on saving the 
>> > model. 
>> > 
>> > Thanks for any hints 
>> > 
>> > Mike 
>> > 
>>
>>

-- 
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 http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/779b8d85-e0c5-477c-a3ca-dcf18c814938%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to