我试图创建一个人们可以创建活动的网站,然后添加图片(来自外部相册,无需上传),然后我想提取有关添加和显示的图片数量的信息在中央目录上。例如(为简洁起见,不包括一些代码):
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项数。
谢谢!
答案 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
函数,该函数将在数据库中为您执行注释。函数的语法因数据库而异。