我有一個django 1.6應用程序,其中包含以下內容(爲清晰起見,已修剪) 已定義的類。用戶是標準的django.contrib.auth用戶類。如何在django中引用通過外鍵加入的模型管理員
class Event(models.Model):
user = models.ForeignKey(User, related_name='events')
name = models.CharField(max_length=64)
class Profile(models.Model):
user = models.ForeignKey(User, related_name='aprofile')
class MemberProfile(Profile):
pass
這裏是我的管理類:
class ProfileAdmin(ModelAdmin):
model = Profile
fields = ('user',)
class MemberProfileAdmin(ModelAdmin):
model = MemberProfile
fields = ('user',)
readonly_fields = ('user',)
我想要做的是一個給定的成員,或至少資料中顯示的所有事件的只讀列表。當然,加入用戶外鍵似乎是要走的路,但我如何做到這一點卻空白。以下是迄今爲止的嘗試總結。
定義的事件類直接引用用戶領域的在線管理,並把它添加到ProfileAdmin:
class EventInlineAdmin(TabularInline):
model = Event
fk_name = 'user' # Fails - fk_name 'user' is not a ForeignKey to <class 'solo365.solo_profile.models.profile.Profile'>
......哦,不,它肯定不是。但是,我們的用戶有一個「aprofile」字段,所以......
class EventInlineAdmin(TabularInline):
model = Event
fk_name = 'user__aprofile' # Fails - EventInlineAdmin.fk_name' refers to field 'user__aprofile' that is missing from model 'admin_fk_test.Event'.
好,這些領域看起來像他們應該同步上漲,但也許我們需要多一點侵略性:
class EventInlineAdmin(TabularInline):
model = Event
fk_name = 'user__aprofile__pk' # Fails - 'EventInlineAdmin.fk_name' refers to field 'user__aprofile__pk' that is missing from model 'admin_fk_test.Event'.
我也試着在formline_for_foreignkey()和inline和常規模型管理員的朋友中搞亂,但沒有fk_name有一個有效的值,那些方法永遠不會被調用。
我認爲然後嘗試直接從檔案的用戶訪問事件現場:
class ProfileAdmin(ModelAdmin):
model = Profile
fields = ('user', 'user__events') # Fails - Unknown field(s) (user__events) specified for Profile. Check fields/fieldsets/exclude attributes of class ProfileAdmin.
什麼用自定義formfield_for_foreignkey()方法?可悲的是,除了「用戶」字段之外,其他任何事情都不會被調用。我也考慮過一個自定義的get_formsets()方法,但坦率地說,我不知道如何在沒有工作的EventInlineAdmin的情況下使用它。
我當然可以定義一個自定義字段,它可以簡單地連接所有事件並將其作爲字符串返回,但理想情況下我更喜歡像全功能內聯(甚至是隻讀)而不僅僅是一個塊o'文本。 IOW這樣的自定義字段將有一種方法,(理想情況下)將返回一個內聯表單,而不需要任何類型的自定義模板,設置allow_tags等。
我註定要爲Profile創建一個完全自定義的表單管理員類?還是有一個簡單的方法來完成我想要做的事情,我只是想念?
更新:如果所提供的解決方案適用於在MemberProfileAdmin類
獎勵積分,而不僅僅是ProfileAdmin類。
我會親自重寫change_form.html中的每一個。所以在你的模板文件夾'/ templates/admin/AppName/modelname/change_form.html' –
感謝您的回覆。這也發生在我身上,只是希望儘可能避免任何形式的自定義表單或模板。 – tbm