2013-11-14 2 views
2

Как подсчитать количество объектов класса Record в базе данных sqlite3, подключенной к одному определенному объекту класса Subject. Я создал новые объекты в django-admin.django как подсчитать количество объектов одного класса в базе данных

class Subject(models.Model): 
    name = models.CharField(max_length=100) 

class Record(models.Model): 
    subject = models.ForeignKey(Subject) 
    record_short_description = models.CharField(max_length=100) 

ответ

2
Record.objects.filter(subject=subject_instance).count() 

Или как это - subject_instance.record_set.count().
Эндрю Горскетер имеет смысл.

Docs: https://docs.djangoproject.com/en/dev/ref/models/querysets/#count

+0

Почему второй лучше? –

+0

Я не могу прокомментировать разницу в производительности, но этот подход выглядит немного более «родным» для меня. Убрали «лучше», чтобы никого не смущать. –

+0

В качестве побочного примечания, если вы используете 'filter (subject_id = subject_instance.pk)', django не будет создавать соединение, чтобы включить идентификатор. –

1

Допустим, ваш экземпляр называется sub:

sub.record_set.count() 

Внешний ключ на запись автоматически создает обратную ссылку под названием record_set. Вы можете настроить это имя, используя аргумент related_name для models.ForeignKey(). Например, subject = models.ForeignKey(Subject, related_name="records"), а затем sub.records.count()

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