django admin inline formset覆盖保存

时间:2009-11-04 13:44:22

标签: django django-admin

我的模型看起来像这样:

class ProjectImage(models.Model):
    big_thumb = ThumbnailField(upload_to='profiles', size=(500, 500))
    med_thumb = ThumbnailField(upload_to='profiles', size=(300, 300))
    small_thumb = ThumbnailField(upload_to='profiles', size=(100, 100))

我将ProjectImage与Project关联为TabularInline。在管理员中,我想能够说明如果没有提供中等和/或小缩略图,请使用与大缩略图相同的图像。但是,我很难弄清楚如何指定这种行为。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您有两种选择,您可以覆盖ProjectImage的保存定义,并将其big_thumb复制到med_thumbsmall_thumb无,或只是创建一个简单的模型定义来显示每个字段。

def get_med_thumb_url(self):
    if self.med_thumb is None:
         return self.big_thumb.url

    return self.med_thumb.url

small_thumb执行相同操作,这样可以防止您使用保存方法,并且不得不复制内容并浪费空间。

我不记得ImageField是否有get_FOO_url类型的定义,但如果确实如此,你总是可以超越它。