这是我的模特:
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
字段?
答案 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)