0

我正在扩展 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. 创建用户成功没有病房
  2. 用户成功创建其他记录
  3. 编辑用户现在不会让我保存,除非选择了一个病房

我真的很希望上面的#1 失败。

我已经尝试弄清楚如何使用代理对象进行覆盖save()User但这不起作用。我查看了pre_save信号,但文档明确表示这不是为了否决保存。

什么是正确的方法?

附加信息:

  • 我正在使用 1.4。我看到在 1.5 中我可以扩展用户类,但我还不能更新到 1.5。

我最终继续使用 Django 1.5,但我将把它留在这里,以防有人对 1.4 做出贡献的最终答案。

4

1 回答 1

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()
于 2014-03-10T07:55:34.867 回答