我有一个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()或不使用不同的结果。 –
感谢您的澄清。现在我只需要弄清楚如何将参数传递给管理器方法。 –