计算Django中的非空字段数

时间:2017-02-05 00:35:49

标签: python django

我试图创建一个人们可以创建活动的网站,然后添加图片(来自外部相册,无需上传),然后我想提取有关添加和显示的图片数量的信息在中央目录上。例如(为简洁起见,不包括一些代码):

models.py

class EventDB(models.Model):
     picture1 = models.CharField ("picture 1", max_length=255, blank=True)
     picture2 = models.CharField ("picture 2", max_length=255, blank=True)

如果有人向EventDB添加了一个项目并添加了1张图片,我可以将输出返回为1.如果他们添加了2张图片,则返回2,依此类推。

我希望有一个列出所有事件的中央页面,旁边有相应数量的图片。例如:

Event1(2)

Event2(1)

Event3(4)

其中括号中的数字是图片数量。最好的方法是什么?我试过玩(picture1__isnull = True).count(),但是在没有上传picture1的情况下计算我的数据库中的TOTAL项数。

谢谢!

1 个答案:

答案 0 :(得分:0)

添加一个属性或函数,为您计算图片总数:

class EventDB(models.Model):
    picture1 = models.CharField ("picture 1", max_length=255, blank=True)  
    picture2 = models.CharField ("picture 2", max_length=255, blank=True)

    def picture_count(self):
        fields = self._meta.get_fields()
        n_count = len([ x for x in fields if getattr(self, field.name) ])
        return n_count    

或者,您可以编写一个F函数,该函数将在数据库中为您执行注释。函数的语法因数据库而异。