我正在尝试覆盖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)
答案 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
你已经完成了。