2010-11-08 47 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