【发布时间】:2010-04-17 03:49:25
【问题描述】:
我在互联网上寻找一种方法,让用户可以轻松地清空他们在管理员中设置的图像字段/文件字段。
我发现了这个: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
【问题讨论】:
-
调用超级方法看起来不错,你确定没有更多或不同的代码吗?也代替
object使用'obj' -
感谢提示使用 obj。我不知道是否应该有更多代码,这就是链接中的全部内容。链接上的评论者可能会假设阅读它的人比我更精通 django/python 并且缺少的部分很明显?
标签: python django django-admin django-forms django-models