我有一个带有__init__
方法的模型:
class Foo(models.Model):
name = models.CharField(max_length=50)
def __init__(self, *args, **kwargs):
self.bar = kwargs.pop('bar', False)
super(Foo, self).__init__(*args, **kwargs)
if self.bar:
# do something
pass
现在,我需要创建一个特定的 ModelForm:
class FooForm(ModelForm):
class Meta:
model = Foo(bar='something')
fields = ('name',)
这显然不起作用:
TypeError: 'Foo' object is not callable
有什么办法可以克服这个吗?
更新
关于我想要实现的更多信息:我有一个带有 ImageField 的 Image 模型。它有不同的存储方法,具体取决于使用它的形式。
该模型:
class Image(models.Model):
image = models.ImageField(upload_to=imageUploadTo)
user = models.ForeignKey('auth.User')
def __init__(self, *args, **kwargs):
self.overwrite = kwargs.pop('overwrite', False)
super(Image, self).__init__(*args, **kwargs)
if self.overwrite:
self.image.storage = OverwriteStorage()
现在我希望能够创建覆盖旧图像的表单和使用默认行为的表单。实现这一目标的最佳方法是什么?