我正在扩展 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 做出贡献的最终答案。