0

Django インターフェイスを開発していますが、アップロードされたファイルの名前を変更する際に問題があります。

ここに私のモデルの一部があります

class Test(models.Model):
    var = models.IntegerField()
    var1 = models.ManyToManyField('OtherClass')

    file = models.FileField(upload_to='dir/%d',storage=MyFileSystemStorage())

ご覧のとおり、私はいくつかの多面的なモデルを持っており、保存するときにアップロードしたファイルの名前を変更できるようにしたいと考えています。私は独自の方法「MyfileSystemStorage」でそれを行いました、問題は、保存時にファイルの名前に管理インターフェイスで「選択された」var1情報を追加したいことです。

それを行うことは可能ですか?誰かが私を助けることができれば、私は感謝しています..

ありがとうございます

4

1 に答える 1

0
class ExampleForm(ModelForm):
    def save(self, commit=True):
        m = super(ExampleForm, self).save(commit=False)

        m2mvariable = self.cleaned_data['var1']
        # do stuff..

        if commit:
            m.save()
        return m

    class Meta:
        model = Test


class TestAdmin(admin.ModelAdmin):
    filter_horizontal = ('var1',)
    form = ExampleForm

admin.site.register(Test, TestAdmin)

あなたの他のコメントについて:

文字列表現が必要な場合は、モデルの unicode メソッドを作成できます。たとえば、次のようになります。

class Test(models.Model):
    #attrs...

    def __unicode__(self):
        return u"%s" % self.someattr

しかし、m2m の結果は何でも好きなように処理できます。それらを繰り返し処理することができます。

for obj in results:
    print obj.attr
于 2012-05-24T11:00:37.917 に答える