我有工作代码 - 管理员只能在管理面板中添加4张图片。但是用户也可以在他的用户界面中添加图像。如何为用户做同样的规则(只有4张图片)?
models.py:
class PicturesManager(models.Manager):
def create_pictures(self, car, img):
pictures = self.create(car=car, image=img)
return pictures
class Pictures(models.Model):
car = models.ForeignKey(Car, verbose_name="Car", related_name='pictures')
width = models.PositiveIntegerField(editable=False, default=780)
height = models.PositiveIntegerField(editable=False, default=585)
image = models.ImageField(verbose_name="Photo", upload_to = get_file_path, max_length=64, height_field='height', width_field='width'
)
objects = PicturesManager()
def __unicode__(self):
return str(self.id)
admin.py:
class PicuresInline(admin.TabularInline):
model = Pictures
extra = 4
# only 4 pictures
def has_add_permission(self, request):
count = Pictures.objects.all().count()
main = Pictures.objects.all().filter(main=True).count()
count = Pictures.objects.filter(main=True).count()
if count <= 4:
return True
else:
return False
那么,在保存图像之前,我可以将has_add_permission
复制到Pictures类并在视图中进行检查吗?它需要,因为用户可以编辑图像(删除或上传新的)。但是在 admin.py 我使用main = True
,它是否可以在 model.py 中使用?
如何检查第一次,用户上传文件的时间(多少):
if request.FILES <= 4:
pictures_save(car, request.FILES)
右?
感谢。
答案 0 :(得分:0)
只需覆盖模型的save
方法,无论上传者是谁,都会将图片限制为四个:
class Pictures(models.Model):
# your normal fields here
def save(self, *args, **kwargs):
if Pictures.objects.filter(main=True, car=self.car).count() >= 4:
return # Don't save if its already more than 4
else:
super(Picture, self).save(*args, **kwargs)
def __unicode__(self):
return unicode(self.id) # unicode methods should return unicode