根据同一模型的上传文件填写字段

时间:2014-02-21 14:00:19

标签: python django django-models django-admin

这是我的模特:

class Apks(models.Model):
    id = models.IntegerField(primary_key=True)
    version = models.CharField(max_length=20, blank=True)
    file = models.FileField(max_length=200, upload_to='files')

    def apk2version(self):
        return subprocess.check_output(['apk2version', self.file.path], stderr=None)

上传文件(由Django admin提供)和元信息(版本字段)的路径在同一个SQL表中。该表由一些Android应用程序通过一些web服务使用,所以我不能轻易地重新设计它。

版本字段根据上传文件的内容填充(通过某些apk2version脚本从APK文件及其清单中解压缩)

我试图覆盖save方法。不幸的是,我无法调用apk2version脚本,因为调用该方法时该文件尚不存在。

是否可以根据(尚未?)上传的version来填充file字段?

1 个答案:

答案 0 :(得分:0)

from django.db.models.signals import post_save

from .... import Apks

def fill_version(sender, instance, created, **kwargs):
    if instance and created:
        instance.version = instance.apk2version()
        instance.save()
post_save.connect(fill_version, sender=Apks)