我正在开发一个Django界面,我在更改上传文件的名称时遇到了问题。
这是我模特的一部分
class Test(models.Model):
var = models.IntegerField()
var1 = models.ManyToManyField('OtherClass')
file = models.FileField(upload_to='dir/%d',storage=MyFileSystemStorage())
正如你所看到的,我有一些很多模型,我希望能够在保存时更改我上传文件的名称。 我用我自己的方法“MyfileSystemStorage”做到了,问题是我想在管理界面中将“已选择”的var1信息添加到我保存的文件名中。
是否可以这样做以及如何做?如果有人可以帮助我,我将不胜感激。
感谢所有人看到你
答案 0 :(得分: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