2016-01-03 28 views
0

我正在致力於Django項目。我有兩種類型的成員(用戶配置文件) - 客戶和翻譯員。我想看到這些配置文件在Django管理,包括它的用戶屬性,如usernamesurename如何設置Django Admin在其用戶配置文件選項卡中顯示所有用戶的屬性?

現在,當我創建假設UserTranslatorProfile稱爲Thomas,我可以看到他的名字,在Users用戶名等在AuthDjango Admin以及屬於它的UserTranslatorProfiles中的其他屬性,這是非常不舒服的。 (在UserTranslatorProfile我可以看到它是哪個用戶,但我看不到他的屬性並且不能改變它們)。

兩個配置文件所在的位置:

class UserTranslatorProfile(models.Model): 
    user = models.OneToOneField(User) 
    languages = models.ManyToManyField(Language) 

class UserCustomerProfile(models.Model): 
    user = models.OneToOneField(User) 

而且他們當然在admin.py

註冊所以,問題是:是否可能,如果是如何通過點擊來查看所有UserUserProfile attibutes UserProfileDjango-Admin

回答

2

添加ModelAdminUserTranslatorProfiles並添加usernameemail等相關領域進入fields屬性。

ModelAdmin放在admin.py文件中,他們進一步定製了模型在管理中顯示的方式。

from django.contrib import admin 
    from myproject.myapp.models import UserTranslatorProfiles # Import your model 

    class UserTranslatorProfilesAdmin(admin.ModelAdmin): 
     fields = ('username', 'email,) # Enter full list of fields here 

    admin.site.register(UserTranslatorProfiles, UserTranslatorProfilesAdmin) 
+0

感謝阿布做到這一點,你能不能詳細闡述請再多一點?我不知道如何以及在哪裏添加ModelAdmin。我已經檢查了這個URL的例子:http://patrick.arminio.info/additional-admin-views/,但它沒有幫助。 –

+1

我已添加鏈接並添加了一些示例代碼 – masnun

+0

嗯,它不起作用。例外值:\t 爲UserTranslatorProfile指定的未知字段(first_name)。檢查字段/字段集/排除類UserTranslatorProfileAdmin的屬性。但我認爲first_name屬於每個用戶,所以它應該是正確的。 –

0

只需要設置的ModelAdmin與管理站點

step 1:註冊它創建應用程序中的admin.py如果不存在。
step-2:導入您想要在管理站點上顯示的模型。
step-3:創建管理模型並將其註冊到管理站點。

from django.contrib import admin 
from myproject.myapp.models import Author #import your model 
class AuthorAdmin(admin.ModelAdmin): 
     fields = ('name', 'title', 'view_birth_date')# define-fields 


admin.site.register(Author, AuthorAdmin) #now register your custom-admin model 

更多
https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#modeladmin-objects

+0

'//'不能用作Python中的單行註釋。你必須使用'#'。例如:http://ideone.com/mzkkT1 – masnun

+0

感謝這個...;) – GrvTyagi

+0

這是行不通的。我已經將這添加到我的admin.py中,並將一個屬性添加到字段中 - 'first_name'絕對存在於內置用戶中。但它不起作用:例外值:\t爲UserTranslatorProfile指定的未知字段(first_name)。檢查字段/字段集/排除類UserTranslatorProfileAdmin的屬性。 –

0

不幸的是,這是比它需要/應該是更加困難。沒有內聯管理員,管理員添加/更改表單僅用於編輯一個模型。

如果您可以更改用戶模型,則可以通過創建自己的自定義用戶對象來實現此目的,該用戶對象是從用戶繼承的。然後,在settings.py中,將AUTH_USER_MODEL設置爲您的新模型。請注意,這應該在輸入數據之前完成,並且您的第一次遷移已完成(因此您需要重新開始)。

如果您無法這樣做,我可以考慮其他兩個方向您可以採取:

更簡單:爲User對象創建一個內聯管理員,並將其註冊到您的翻譯對象。然後,您將在頁面底部的內聯管理員中擁有一行,可用於編輯用戶。我從最終用戶用戶體驗角度討論這個問題,但它可以完成工作。創建一個自定義表單,添加對應於你想在User模型中編輯的字段,然後在表單的clean和save方法中,驗證/保存底層User對象的方法。例如,創建表單域「tra_username」,「tra_firstname」,「tra_password」 ......然後,在(驗證後)形式的保存方法,爲每個字段

UserCustomProfile.user.first_name = form.cleaned_data.get("tra_firstname")` 
UserCustomProfile.user.save() 
相關問題