[英]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.