2014-02-16 3 views
1

Я хотел бы показать, сколько отношений имеет объект в администраторе Django.Как узнать, сколько отношений у модели Django у администратора?

Скажем, у меня есть следующие модели:

class Question(models.Model): 
    question_text = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 


class Choice(models.Model): 
    question = models.ForeignKey(Question) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

И я хотел бы, чтобы отобразить в админ (list_display) рядом с Poll Вопрос количества вариантов Есть. Есть ли способ добавить функцию к классу Question, которая вернет количество вариантов?

Редактировать

Это гипотетическая модель. Я использую модели с файловым хранилищем и хотел бы подсчитать, сколько файлов связано с «основной» моделью или в этом случае классом Question.

+1

Вы можете попробовать использовать 'Count = Question.choice_set.count()'? –

+0

@anishshah Код, который я добавил, был гипотетической моделью, в моем случае класс 'Choice' фактически является моделью хранения файлов, и я хотел бы подсчитать, сколько файлов связано с моделью« Вопрос ». Поэтому choice_set не будет работать здесь. – IPDGino

ответ

2

Опция list_display позволяет вам указывать функции на самом ModelAdmin для отображения в виде столбцов. Вам даже не нужно определять эту функцию на вашей модели Question, если вам понадобится только ее для вашего ModelAdmin.

Из docs of list_display:

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('upper_case_name',) 

    def upper_case_name(self, obj): 
     return ("%s %s" % (obj.first_name, obj.last_name)).upper() 
    upper_case_name.short_description = 'Name' 

функция, указанный в атрибуте list_display будет вызываться с одним параметром: объект, который отображается. Вы можете получить счетчик связанных экземпляров с использованием RelatedManager.count на вашей обратной связи:

return obj.choice_set.count() 
+0

Я понимаю, как эта часть 'list_display' работает. Однако главный вопрос в OP - это то, как подсчитать количество отношений, которые имеет модель. – IPDGino

+0

Извините, я не понял документацию и ваш ответ правильно. Теперь я понимаю, что модель имеет возможность видеть отношения с 'obj. (Modelname в нижнем регистре) _set.count()'. Я принял ваш ответ. – IPDGino

Смежные вопросы