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 回答