While Jani's admonishments might be considered 'best practice' in some
cases. Those do not always cover everyone's use case.

I solved a similar issue allowing users with the superuser role to have
edit access to some items that other staff do not have access to edit.

Use the get_form method of the ModelAdmin and select the form to call.

For example:
    def get_form(self, request, obj=None, **kwargs):
        if request.user.is_superuser:
            kwargs['form'] = DMAdminSUForm
        else:
            kwargs['form'] = DMAdminForm

Then in each form you can set the readonly attributes and any other user
role specific functionality you need.

HTH,
Tim







On Wed, Nov 18, 2015 at 8:21 AM, Jani Tiainen <[email protected]> wrote:

> Hi,
>
> In general you shouldn't be even trying to do this in admin since it's not
> designed for this kind of functionality.
>
> Admin is just a datacentric tool to view your data. It's never been meant
> to help implementing any businesslogic. And basically you only should let
> people in admin that you trust full 100%.
>
> If you can't trust them (which is indicated by "readonly field"
> requirement) you should do custom view and templates for that. Generic
> class based views can greatly help you to achieve it, and most probably
> with really less effort than trying to do that in admin.
>
>
>
> On 18.11.2015 12:15, Victor wrote:
>
>> Dear experts,
>>
>> models.py
>>
>> class Book(models.Model):
>>      title = models.CharField(max_length=100)
>>      author = models.CharField(max_length=100)
>>      quantity = models.IntegerField(db_column='quantitity',default=0)
>>      class Meta:
>>          db_table="book"
>>
>> admin.py
>>
>> class BookOption(admin.ModelAdmin):
>>      list_display = ('title', 'author', 'quantity')
>>      fields=(('title', 'author'), ('quantity'))
>>      order_by= ['title', ]
>>
>> admin.site.register(Book,BookOption)
>>
>>
>> I'm trying to explain my problem with the simple example above.
>> Let's suppose that I have two staff users 'victor' and 'roby' and I want
>> that the fields 'author and 'quantity' be readonly when user 'roby' is
>> logged in and readwrite for user 'victor'
>> How can I achieve this result if possible with something of the following
>> simple kind
>>
>>
>> class BookOption(admin.ModelAdmin):
>>      if (user is 'roby'):
>>         readonly_fields=['quantity',]
>>      list_display = ('title', 'author', 'quantity')
>>      fields=(('title', 'author'), ('quantity'))
>>      order_by= ['title', ]
>>   Thanks
>> Vittorio
>>
>> --
>
> Jani Tiainen
>
> --
> 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/564C5123.1020501%40gmail.com
> .
>
> For more options, visit https://groups.google.com/d/optout.
>



-- 

============================================
Timothy Cook
LinkedIn Profile:http://www.linkedin.com/in/timothywaynecook
MLHIM http://www.mlhim.org

-- 
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/CA%2B%3DOU3XZv1HPFtzq27S2ZGD1n6XNad%2BT2nbYyQP3m2Gtm86fTg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to