我正在扩展 Django User 模型以包含指向另一个模型的外键(就像它在Django 文档中所说的那样):
模型.py:
class Ward(models.Model):
    name = models.CharField(max_length=100)
    def __unicode__(self):
        return self.name
# Extending the user model
class WardMember(models.Model):
    user = models.OneToOneField(User)
    ward = models.ForeignKey(Ward)
    def __unicode__(self):
        return self.ward.name
管理员.py:
class WardMemberInline(admin.StackedInline):
    model = WardMember
    can_delete = False
    verbose_name_plural = 'ward member'
# Define a new User admin
class UserAdmin(UserAdmin):
    inlines = (WardMemberInline, )
admin.site.register(Ward)
# Re-register UserAdmin to get WardMember customizations
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
当我在管理界面中创建一个新用户时,我希望这个新WardMember.ward扩展是必需的。目前它没有强制执行。这是发生的事情:
- 创建用户成功没有病房
 - 用户成功创建其他记录
 - 编辑用户现在不会让我保存,除非选择了一个病房
 
我真的很希望上面的#1 失败。
我已经尝试弄清楚如何使用代理对象进行覆盖save(),User但这不起作用。我查看了pre_save信号,但文档明确表示这不是为了否决保存。
什么是正确的方法?
附加信息:
- 我正在使用 1.4。我看到在 1.5 中我可以扩展用户类,但我还不能更新到 1.5。
 
我最终继续使用 Django 1.5,但我将把它留在这里,以防有人对 1.4 做出贡献的最终答案。