два внешних ключа обратно пользователю и вызов get_full_name в Admin - PullRequest
0 голосов
/ 08 ноября 2010

Пожалуйста, два вопроса:

Мне нужно два внешних ключа обратно пользователю, один для автора и один для соавтора.Мне удалось установить 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='+') 

Кевин

Ответы [ 2 ]

3 голосов
/ 08 ноября 2010

Я бы изменил связанное имя на более понятное значение - например, books_where_coauthor, а также добавил бы аналогичное значение books_where_author, так как тогда вы можете получить соответствующие книги, перейдя от theuser.books_where_author.all() и т. Д.

Относительно вашего запроса администратора, вы получаете имя пользователя, потому что это то, что выдает по умолчанию __unicode__() метод пользователя.

Если вы не хотите взломать свой файл contrib.auth.models (нерекомендуется), я бы предложил использовать пользовательскую модель модели в администраторе и вручную задать имена вариантов в ModelChoiceField , либо путем создания подкласса этого поля и создания пользовательского, который отображает свой виджет с get_full_name если возможно, или сделайте это через что-то вроде этот фрагмент .Тем не менее, я уверен, что есть более простой способ сделать это, но я забыл.Dangit.

0 голосов
/ 10 ноября 2010

Что касается второй части моего вопроса (отображение полных имен вместо имен пользователей в ChoiceField формы), я обнаружил эту ссылку просто как билет:

...