# models.py
from django.db import models
class Entry(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
created = models.DateTimeField(auto_now_add = True)
author = models.ForeignKey('auth.User')
def __unicode__(self):
return self.title
class Meta:
verbose_name_plural = 'entries'
# admin.py
from django.contrib import admin
from models import Entry
class EntryAdmin(admin.ModelAdmin):
list_display = ('title', 'created', 'author')
list_filter = ('author',)
exclude = ['author']
def queryset(self, request):
qs = super(EntryAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
else:
return qs.filter(author = request.user)
def save_model(self, request, obj, form, change):
obj.author = request.user
obj.save()
def has_change_permission(self, request, obj=None):
if not obj:
return True # So they can see the change list page
if request.user.is_superuser or obj.author == request.user:
return True
else:
return False
has_delete_permission = has_change_permission
admin.site.register(Entry, EntryAdmin)
Comments
this works fine, but suppose you have the following case that your initial model has a foreign key to a different model, then filtering does not work. The normal user will still see all entries from all other users. In this case (assuming you use the same admin model that you proposed for both models) a normal user will only be able to see his entries and projects, but when he creates a new entry, he can choose from all projects, not only his own. Is there a way to submit a filter to ForeigKey?
[HTML_REMOVED][HTML_REMOVED]
#
Facing the same problem as above. Has anyone figured it out yet? Please share.
#
Add following methods to your ModelAdmin and define filters for form and queryset.
#
@mambo;
About this line:
... what is "userdomain"? A relation of some kind in the model "Domain"?
#
If you're using v1.1, I found combining ModelAdmin.formfield_for_foreignkey, to filter the Admin form ForeignKeys, combined with Simon's original snippet, to filter the change list view items, useful.
#
sistem Universitas Kuliah di Fakultas Teknik Biomedis, CTU di Praha.
Universitas pendidikan meliputi pengajaran, penelitian, dan kegiatan pelayanan sosial, dan itu termasuk tingkat sarjana (kadang-kadang disebut sebagai pendidikan tinggi) dan pascasarjana (atau pascasarjana) tingkat belajar bahasa inggris (kadang-kadang disebut sebagai sekolah pascasarjana). Universitas umumnya terdiri dari kursus bahasa inggris murah beberapa perguruan tinggi. Di Amerika Serikat, perguruan tinggi dapat soal ulangan harian sd menjadi pribadi dan independen, seperti Universitas Yale, mereka dapat umum dan Negara diatur, seperti Pennsylvania State Sistem click here Pendidikan Tinggi, atau mereka dapat mandiri tetapi mendapatkan uang dari internet Negara didanai, seperti University of Virginia.
#