Show Django Admin Log entries
select u.username, u.first_name, u.last_name, l.action_time, c.name, c.app_label,
l.object_id as "Object Modified", l.object_repr, l.action_flag, l.change_message
from (auth_user u inner join django_admin_log l on u.id = l.user_id )
inner join django_content_type c on c.id = l.content_type_id
where l.object_id = '9' /* filter by object id if desired */
and l.action_time > to_date('2010-10-04 01:00','YYYY-MM-DD HH:MI') /* filter by date range */
order by l.action_time;
Showing posts with label admin. Show all posts
Showing posts with label admin. Show all posts
Monday, October 04, 2010
Saturday, August 21, 2010
Dynamic Fieldsets in Django Admin
Problem: the fieldsets option for the admin interface (classes defined in admin.py) requires that you explicitly list every single field in the model in the fieldset list that you pass to it. This gets tedious if you add a field to a model, as you also have to add it to this admin.py. Not very DRY.
Solution:
In models.py
from django.db import models
class My(models.Model):
a = models.CharField(max_length=10)
b = models.CharField(max_length=10)
c = models.CharField(max_length=10)
d = models.CharField(max_length=10)
e = models.CharField(max_length=10)
f = models.CharField(max_length=10)
g = models.CharField(max_length=10)
h = models.CharField(max_length=10)
In admin.py
from django.contrib import admin
from django.forms.models import fields_for_model
from f import models
class MyAdmin(admin.ModelAdmin):
def __init__(self, *args, **kwargs):
super(MyAdmin, self).__init__(*args, **kwargs)
all_fields = set(fields_for_model(models.My))
fieldset1_fields = ('e', 'f',)
fieldset2_fields = ('g', 'h',)
fieldset_fields = set(fieldset1_fields) | set(fieldset2_fields)
rest_fields = list(all_fields - fieldset_fields)
self.fieldsets = (
(None, {
'fields': rest_fields
}),
('Fieldset 1', {
'classes': ('collapse',),
'fields': fieldset1_fields
}),
('Fieldset 2', {
'classes': ('collapse',),
'fields': fieldset2_fields
}),
)
models = models.My
admin.site.register(models.My, MyAdmin)
Thanks for the help lorochka85
Solution:
In models.py
from django.db import models
class My(models.Model):
a = models.CharField(max_length=10)
b = models.CharField(max_length=10)
c = models.CharField(max_length=10)
d = models.CharField(max_length=10)
e = models.CharField(max_length=10)
f = models.CharField(max_length=10)
g = models.CharField(max_length=10)
h = models.CharField(max_length=10)
In admin.py
from django.contrib import admin
from django.forms.models import fields_for_model
from f import models
class MyAdmin(admin.ModelAdmin):
def __init__(self, *args, **kwargs):
super(MyAdmin, self).__init__(*args, **kwargs)
all_fields = set(fields_for_model(models.My))
fieldset1_fields = ('e', 'f',)
fieldset2_fields = ('g', 'h',)
fieldset_fields = set(fieldset1_fields) | set(fieldset2_fields)
rest_fields = list(all_fields - fieldset_fields)
self.fieldsets = (
(None, {
'fields': rest_fields
}),
('Fieldset 1', {
'classes': ('collapse',),
'fields': fieldset1_fields
}),
('Fieldset 2', {
'classes': ('collapse',),
'fields': fieldset2_fields
}),
)
models = models.My
admin.site.register(models.My, MyAdmin)
Thanks for the help lorochka85
Subscribe to:
Posts (Atom)
