سؤال

لديّ ملف تعريف المستخدم الذي يظهر حاليًا في المسؤول عبر خط مكدس. ومع ذلك ، نظرًا لأن لدي حقول مثل Last_Name_Prefix و Last_Name_Suffix (للأسماء الأجنبية مثل Piet van Dijk لتغطية الفرز المناسب بالاسم الأخير) ، أود أن أتمكن من ربط حقول ملف تعريف المستخدم مع حقول المستخدم المتغيرة العادية. لذلك في واجهة مسؤول المستخدم ، سيظهر هكذا:

الاسم الاول:
بادئة الاسم الأخير:
الكنية
لاحقة الاسم الأخير:

لقد جربت هذا الحل: http://groups.google.com/group/django-users/browse_thread/thread/bf7f2a0576e4afd1/5e3c1e98c0c2a5b1. لكن ذلك أنشأ للتو حقولًا إضافية في نموذج المستخدم الذي لم يكن يأتي بالفعل من ملف تعريف المستخدم (ظلوا فارغين على الرغم من أنها يجب أن تحصل على قيم من ملف تعريف المستخدم).

هل يمكن لأحد أن يشرح لي ما إذا كان يمكن القيام بذلك وكيف؟ شكرا جزيلا!

هل كانت مفيدة؟

المحلول 2

تم حل هذا السؤال من خلال الإصدار 1.5 الجديد Django: https://docs.djangoproject.com/en/1.5/topics/auth/customizing/#auth-custom-user.

نصائح أخرى

أنا متأكد من أنك ستحتاج إلى كتابة مسؤول المستخدم العادي.

ما سأفعله بالفعل هو إنشاء خاص forms.ModelForm لاستدعاء userprofile ، قل UserProfileAdminForm التي شملت الحقول من User نموذج كذلك. ثم تقوم بتسجيل UserProfile للمسؤول و save وظيفة userprofiLeadMinform ستحصل على الحقول الخاصة بالمستخدم وإما إنشاء أو تحديث User السجل (يتم ترك هذا كتمرين إلى البروتوكول الاختياري).

مزيد من المعلومات

عندما أقول أضف المزيد من الحقول إلى نموذج ، أعني إضافتها يدويًا:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top