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()
我是 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()