【发布时间】:2010-05-11 18:00:59
【问题描述】:
我使用名为UserExtension 的自定义用户配置文件扩展了 Django 的用户模型。
它通过唯一的 ForeignKey 关系与 User 相关联,这使我能够在管理员中以内联形式对其进行编辑!
我正在使用信号为每个新用户创建一个新的配置文件:
def create_user_profile(sender, instance, created, **kwargs):
if created:
try:
profile, created = UserExtension.objects.get_or_create(user=instance)
except:
pass
post_save.connect(create_user_profile, sender=User)
(如此处所述,例如:Extending the User model with custom fields in Django) 问题是,如果我通过管理员创建一个新用户,我会在保存“列 user_id 不是唯一的”时收到 IntegritiyError。信号似乎没有被调用两次,但我猜管理员正试图在之后保存配置文件? 但是如果我在系统的其他部分创建一个新用户,我需要通过信号创建!
【问题讨论】:
-
我们可以见您的 get_or_create 经理吗?
-
是django的默认管理器!
标签: django inline admin django-signals foreign-keys