Ryan- that helps a ton, thanks much. I don't think created_by and
updated_by should be foreign keys, because a user can be deleted but
all of his record adds/updates need to persist. So I replaced those
two lines with:

created_by = models.CharField(blank=True,max_length=20,editable=False)
updated_by = models.CharField(blank=True,max_length=20,editable=False)

This works, but on update the updated_by field is set to the User ID
instead of the User Name.

Also, none of the 4 audit fields are displayed in the browse/list and
change forms. I need to display them read-only on both.

Any ideas on those 2 issues? I think this thread will help a lot of
struggling newbies like me.

Thanks, Lee

On Jun 1, 12:08 am, Ryan <ryan.osb...@live.co.uk> wrote:
> The model code still needs to stay in the model, it is just the save_model
> method had to be moved to the admin.py.  I think the following is what you
> are looking for:
>
> models.py
> ---------------
> from django.db import models
> from django.contrib.auth.models import User
>
> class AuditedTable(models.Model):
>     created = models.DateTimeField(auto_now_add=True)
>     created_by = models.ForeignKey(User, editable=False)
>     updated = models.DateTimeField(auto_now=True)
>     updated_by = models.ForeignKey(User, editable=False)
>
>     class Meta:
>         abstract = True
>
> class Entity1(AuditedTable):
>     title = models.CharField(max_length=20)
>
>     def __unicode__(self):
>         return self.title
>
> admin.py
> -------------
> from django.contrib import admin
> from app.models import Entity1
>
> class AuditAdmin(admin.ModelAdmin):
>     def save_model(self, request, obj, form, change):
>         if change:
>             obj.updated_by = request.user
>         else:
>             obj.created_by = request.user
>         obj.save()
>
> class Entity1Admin(AuditAdmin):
>     pass
>
> admin.site.register(Entity1, Entity1Admin)
>
> Hope that helps,
>
> Ryan

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to