我正在扩展Django User模型以包含指向另一个模型的外键(就像在Django docs中所说的那样):
models.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
admin.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()
的{{1}},但这不起作用。我调查了User
信号,但文档明确表示这不是否决保存。
什么是正确的方法?
其他信息:
我最终用Django 1.5 开始了,但是我会留下这个,以防有人得到最终答案,贡献与1.4一起工作。
答案 0 :(得分:0)
在django 1.3.1中我使用此代码并且工作正常:
from django.contrib.auth.models import User
class FilterSearchQueries(models.Model):
title = models.CharField(max_length=250)
owner = models.ForeignKey(User)
place = models.CharField(max_length=250)
query = models.TextField()