0

我有一个带有__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()

现在我希望能够创建覆盖旧图像的表单和使用默认行为的表单。实现这一目标的最佳方法是什么?

4

1 回答 1

3

不,这根本不是它的工作方式,这与您的自定义初始化无关。您不会在 Meta 内部调用事物。在您的情况下,您在视图中初始化表单时传递参数。

于 2012-06-24T10:50:41.530 回答