繁体   English   中英

计算Django中非空字段的数量

[英]Count # of non-empty fields in 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,依此类推。

我想要一个列出所有事件并在其旁边具有相应图片数量的中央页面。 例如:

活动1(2)

活动2(1)

活动3(4)

括号中的数字是图片的数量。 最好的方法是什么? 我已经尝试过使用(picture1__isnull = True).count()进行游戏,但是它计算的是我的数据库中未上传picture1的项目总数。

谢谢!!

添加将为您计算图片总数的属性或函数:

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函数,该函数将在数据库中为您做注释。 该函数的语法将根据您的数据库而有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM