开发者

django override User model

I'm trying to override the default User model in Django to add some logic into the save() method. I'm having a hard time trying to figure out out to go about this.

I'm using Django 1.1 if that helps.

I used post_save since i need to add the user into ldap.. I just added this into a models.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models import signals
from django.dispatch 开发者_StackOverflowimport dispatcher


def user_post_save(sender, instance, **kwargs):
    print "got here"

models.signals.post_save.connect(user_post_save, sender=User)


Don't. Instead catch the pre_save signal.


You'd better use a Proxy model, so to use the same table but overriding behavior.

This is the standard way to extend Django's own models, because they cannot be made abstract.

So declare your model as:

from django.contrib.auth.models import User

class CustomUser(User):
    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        # do anything you need before saving
        super(CustomUser, self).save(*args, **kwargs)
        # do anything you need after saving

and you are done.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜