Django - 计算模型中相同字段的数量

Django - count numbers of same field in a model

我是 Django 的新手,我正在构建一个电子商务网站 (db: sqlite3)。每件特价商品都上传了 1-5 张图片。所以我在这里得到了模型:

class Item(models.Model):
    '''Item model with maximum 5 images uploaded'''

    <--snip-->

    image_1 = models.ImageField(upload_to='items/')
    image_2 = models.ImageField(upload_to='items/', blank=True)
    image_3 = models.ImageField(upload_to='items/', blank=True)
    image_4 = models.ImageField(upload_to='items/', blank=True)
    image_5 = models.ImageField(upload_to='items/', blank=True)

为了为每个项目创建一个 carousel (bootstrap4),我需要知道上传了多少张图片。我的想法是在class中创建一个函数,找出这个模型中有多少ImageField,有多少不为空。

所以我的问题是:
1.有没有更好的创建ImageField的方式,更动态的方式?
2. 是否可以找出模型中相同字段不为空的编号?

我会为图像创建一个单独的模型,然后 link 它到 Item 模型。这将使过滤更容易,并使图像上传更灵活。

class ItemImage(models.Model):
    item = models.ForeignKey(Item)
    image = models.ImageField(upload_to='items/')

class Item(models.Model):
    <--snip-->

    # we add a model property then do a reverse lookup in order to 
    # count images linked to the item object
    # this can then be accessed by item_obj.image_count
    @property
    def get_image_count(self)
        return self.itemimage_set.all().count()