Я искал по Интернету способ, позволяющий пользователям легко убирать поля изображений / файлов, которые они установили в админке.
Я нашел это: http://www.djangosnippets.org/snippets/894/.
Что меня действительно заинтересовало, так это код, написанный в комментарии rfugger :
remove_the_file = forms.BooleanField(required=False)
def save(self, *args, **kwargs):
object = super(self.__class__, self).save(*args, **kwargs)
if self.cleaned_data.get('remove_the_file'):
object.the_file = ''
return object
Когда я пытаюсь использовать это в своей собственной форме, я в основном добавляю это к своему admin.py
, который уже имел BlahAdmin
.
class BlahModelForm(forms.ModelForm):
class Meta:
model = Blah
remove_img01 = forms.BooleanField(required=False)
def save(self, *args, **kwargs):
object = super(self.__class__, self).save(*args, **kwargs)
if self.cleaned_data.get('remove_img01'):
object.img01 = ''
return object
Когда я запускаю его, я получаю сообщение об ошибке
превышена максимальная глубина рекурсии при вызове объекта Python
в этой строке:
object = super(self.__class__, self).save(*args, **kwargs)
Когда я немного об этом думаю, кажется очевидным, что это просто бесконечный вызов самого себя, вызывающий ошибку. Моя проблема в том, что я не могу понять, как мне правильно это делать.
Есть предложения?
Дополнительная информация по запросу:
Модель blah
:
class Blah(models.Model):
blah_name = models.CharField(max_length=25, unique=True)
slug = models.SlugField()
img01 = models.ImageField(upload_to='scenes/%Y/%m', blank=True)
def __unicode__(self):
return self.blah_name