我有一個Django模型對象,記錄,其中有外鍵的其他兩款車型記錄類型和來源:我在哪裏放置一個函數來計算Django中的外鍵?
class Record(models.Model):
title = models.CharField(max_length=200)
record_type = models.ForeignKey(RecordType)
source = models.ForeignKey(Source)
問:如果我想指望它是指用id來RECORDTYPE記錄對象的數量「× 「和源代碼爲」y「,其中是放置該函數的代碼的適當區域?
現在我已經在views.py中使用它,我認爲這是對「胖模型,薄視圖」的最佳實踐的違反,所以我想將它從views.py中移除。但我不完全確定這是基於行還是基於表的操作類型,所以我不確定它應該作爲模型方法實現,還是作爲管理器實現。
下面是views.py當前(工作)的邏輯:
record_count = Record.objects.filter(record_type__id=record_type_.id, source__id=source_.id).count()
只是要清楚,這不是如何獲得計數問題,而只是其中的代碼區放功能。
這裏有一個類似的問題,但是這是解決「如何」不「其中」: Counting and summing values of records, filtered by a dictionary of foreign keys in Django
結果確實涉及多行計數。那麼,哪個模型的經理應該得到新的方法:記錄? –
是的,因爲它是你正在計數的「記錄」的數量。在其他兩種模型中實現類似的功能會根據您使用distinct()或不使用不同的結果。 –
感謝您的澄清。現在我只需要弄清楚如何將參數傳遞給管理器方法。 –