Wednesday, November 18, 2015

Re: Making a field readonly according to the user in admin.py

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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

No comments:

Post a Comment