2010-11-08 21 views
0

兩個問題請:兩個外鍵返回到用戶和呼叫get_full_name在管理

我需要兩個外鍵返回到用戶,一個作家,一個用於合着者。我設置了related_name等於+,但我不確定這是否聰明或最佳方式。想法或指針?

當通過django管理員爲該模型添加條目時,作者選擇的名稱就像john_smith等。我在哪裏可以調用get_full_names()來顯示全名而不是帶下劃線的用戶名?謝謝。

from django.contrib.auth.models import User 
from django.db import models 
class Books(models.Model): 
    title = models.CharField() 
    author = models.ForeignKey(User) 
    coauthor = models.ForeignKey(User, related_name='+') 

凱文

回答

0

關於我的問題的第二部分(顯示而不是一種形式的ChoiceField用戶名全名),我發現this link到只是門票:

3

我會改變相關的名稱爲更理解價值 - 比如books_where_coauthor也由theuser.books_where_author.all()等會加books_where_author一個類似的,那麼你可以得到相關的書籍

關於您的管理員查詢,您會收到用戶名,因爲這是User的默認__unicode__()方法所吐出的內容。

除非你想破解你的contrib.auth.models文件(不推薦),否則我會建議在管理員中使用自定義模型,並手動設置ModelChoiceField中的選項名稱,可以通過子類化如果可能的話,可以使用get_full_name來製作一個自定義小部件,或者通過類似this snippet的方法來製作它。這就是說,我確信有一個更簡單的方法來做到這一點,但我忘記了。該死的。

+0

PS - 如果你將有一個大量的用戶,我會看看使用raw_id字段(谷歌它)而不是選擇字段,否則管理員會變得非常慢... – 2010-11-08 14:19:49

+0

+1 to raw_id_fields – Harold 2010-11-09 03:42:40