请提出两个问题:
我需要两个外键返回给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='+')
凯文
答案 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只是票证: