两个外键返回User并在Admin中调用get_full_name

时间:2010-11-08 13:24:43

标签: django django-models django-admin

请提出两个问题:

我需要两个外键返回给User,一个用于作者,一个用于coauthor。我通过设置related_name等于+来管理,但我不确定这是聪明还是最好的方法。思想或指针?

当通过django admin为此模型创建添加条目时,作者选择的名称类似于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='+') 

凯文

2 个答案:

答案 0 :(得分:3)

我会将相关名称更改为更易理解的值 - 例如books_where_coauthor,并添加类似的books_where_author,因为您可以从{{1}获取相关的书籍等等

关于您的管理员查询,您将获得用户名,因为这是用户的默认theuser.books_where_author.all()方法吐出的内容。

除非你想破解你的contrib.auth.models文件(不推荐),否则我建议在admin中使用自定义模型,并在ModelChoiceField中手动设置选项的名称,或者通过继承该字段并制作一个自定义的字段,如果可能的话,使用__unicode__()呈现其窗口小部件,或者通过类似this snippet的方式进行。也就是说,我确信有一种更简单的方法可以做到这一点,但我已经忘记了。 Dangit。

答案 1 :(得分:0)

关于我的问题的第二部分(在表单的ChoiceField中显示全名而不是用户名),我发现this link只是票证: