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

いいえ、それはまったく機能しません。これはカスタム初期化とは何の関係もありません。メタ内で物事を呼び出すことはありません。あなたの場合、ビューでフォームを初期化するときにパラメーターを渡します。

于 2012-06-24T10:50:41.530 に答える