django覆盖用户模型

时间:2010-02-25 14:29:52

标签: django django-models

我正在尝试覆盖Django中的默认用户模型,以便在save()方法中添加一些逻辑。我很难想出去解决这个问题。

如果有帮助,我正在使用Django 1.1。

我使用了post_save,因为我需要将用户添加到ldap中..我只是将它添加到models.py中

from django.db import models
from django.contrib.auth.models import User
from django.db.models import signals
from django.dispatch import dispatcher


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

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

2 个答案:

答案 0 :(得分:3)

别。取而代之的是pre_save signal

答案 1 :(得分:1)

您最好使用代理模型,以便使用相同的表但覆盖行为。

这是扩展Django自己的模型的标准方法,因为它们不能被抽象化。

因此,请将您的模型声明为:

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

你已经完成了。