我试图有一个文件域,可在管理员点击,但也只读。目前有一个针对这个问题的开放的ticket,但我现在需要一个解决方法。我试图为我的管理类编写一个验证器,但我运行它时遇到了一个异常。这是我目前拥有的:
class ModelWithAttachment(models.Model):
attachment = FileField(upload_to=somewhere, blank=True)
class ModelWithAttachmentAdminForm(forms.ModelForm):
class Meta:
model = ModelWithAttachment
def clean_attachment(self):
attachment = self.cleaned_data['attachment']
return self.cleaned_data['attachment']
class ModelWithAttachmentAdmin(admin.ModelAdmin):
form = ModelWithAttachmentAdminForm
目前,我在attachment = self.cleaned_data['attachment']
行得到了一个没有异常的AssertionError。如果我用cleaned_data = self.cleaned_data
替换这一行,就会得到相同的AssertionError。据我所知,自行清理的数据应该是在验证过程中创建的,所以我不明白为什么它看起来不存在。在
第二,我对整个方案的目标是检查通过管理员提交的附件的值与它当前保存的值,如果两者不同,则拒绝它(引发ValidationError)——本质上使附件“只读”,同时允许在管理员中单击它。这是一个可行的目标吗?有没有其他更好/更简单的方法来实现这一点?在
我想出来了。我的方法是正确的,
clean_attachment
被定义为:问题是一个旧的.pyc文件被错误地重用。一旦我删掉了,就没事了。希望能帮助别人。在
相关问题 更多 >
编程相关推荐