0

我有一个用户配置文件,目前通过堆叠内联显示在管理员中。但是,因为我有诸如 last_name_prefix 和 last_name_suffix 之类的字段(对于诸如 Piet van Dijk 之类的外国名称,以涵盖按姓氏进行正确排序),我希望能够将用户配置文件字段与正常更改用户字段交错。因此,在更改用户管理界面中,它将如下所示:

名字:
姓氏前缀:
姓氏
姓氏后缀:

我已经尝试过这个解决方案:http ://groups.google.com/group/django-users/browse_thread/thread/bf7f2a0576e4afd1/5e3c1e98c0c2a5b1 。但这只是在用户表单中创建了实际上并非来自用户配置文件的额外字段(即使它们应该从用户配置文件中获取值,它们也保持为空)。

有人可以向我解释这是否可以完成以及如何完成?非常感谢!

4

2 回答 2

0

我很确定您需要覆盖普通用户管理员。

我实际上要做的是forms.ModelForm为 UserProfile 创建一个特殊的名称,比如UserProfileAdminForm它也包含User模型中的字段。然后,您将为管理员注册 UserProfile,并且 UserProfileAdminForm 的save功能将捕获用户特定的字段并创建或更新User记录(这留给 OP 作为练习)。

更多信息

当我说向表单添加更多字段时,我的意思是手动添加它们:

class UserProfileAdminForm(forms.ModelForm):
    username = forms.CharField(...)
    email = forms.EmailField(...)
    first_name = ...
    last_name = ...

    def __init__(self, *args, **kwargs):
        super(UserProfileAdminForm, self).__init__(*args, **kwargs)
        profile = kwargs.get('instance', None)
        if profile and profile.user:
            self.user = profile.user
            self.fields['username'].initial = self.user.username
            self.fields['last_name'].initial = ...
            ...

    class Meta:
        model = UserProfile
于 2010-09-20T19:38:22.567 回答
0

新的 Django 1.5 版解决了这个问题:https ://docs.djangoproject.com/en/1.5/topics/auth/customizing/#auth-custom-user 。

于 2013-07-03T09:08:23.677 回答