Python Django在模型保存方法中调用一个函数,并调用另一个函数来填充值
我在Django有一个模特Python Django在模型保存方法中调用一个函数,并调用另一个函数来填充值,python,django,Python,Django,我在Django有一个模特 class File(models.Model): NORMAL = 'normal' AD = 'ad' FILE_TYPE_CHOICES = ( (NORMAL, 'Normal'), (AD, 'Ad'), ) file_name = models.CharField(max_length=50) file_type = models.CharField(max_length=1
class File(models.Model):
NORMAL = 'normal'
AD = 'ad'
FILE_TYPE_CHOICES = (
(NORMAL, 'Normal'),
(AD, 'Ad'),
)
file_name = models.CharField(max_length=50)
file_type = models.CharField(max_length=10, default=NORMAL,
choices=FILE_TYPE_CHOICES)
file_path = models.FileField('file', upload_to='documents/%Y/')
duration = models.IntegerField()
#prompt_id = models.CharField(max_length=50)
def __unicode__(self):
return self.file_name
def save(self, *args, **kwargs):
self.prompt_id = IvrUploadAudioFile(self.file_path)
super(File, self).save(*args, **kwargs)
我在文件表中有一个列prompt\u id,但我不想在add/edit中显示prompt\u id字段。
我想插入prompt_id值,函数IvrUploadAudioFile将在场景后面返回该值。所以我在这里重写save方法
那么在哪里写IvrUploadAudioFile函数呢。
如何编写这种情况如果要在Django admin中隐藏字段,需要将其设置为
editable=False
:
通过将
self.file path
传递给IvrUploadAudioFile
类,我不确定您打算做什么,但编写的代码不会返回该对象的主键。如果您想在Django admin中隐藏字段,则需要将其设置为editable=False
:
通过将
self.file path
传递给IvrUploadAudioFile
类,我不确定您打算做什么,但编写的代码不会返回该对象的主键。如果您想在Django admin中隐藏字段,则需要将其设置为editable=False
:
通过将
self.file path
传递给IvrUploadAudioFile
类,我不确定您打算做什么,但编写的代码不会返回该对象的主键。如果您想在Django admin中隐藏字段,则需要将其设置为editable=False
:
通过将
self.file path
传递给IvrUploadAudioFile
类,我不确定您打算做什么,但编写的代码不会返回该对象的主键。Django模型只是普通的Python类,您可以向该类添加任意多的帮助器方法:
class File(models.Model):
# -- normal stuff
prompt_id = models.CharField(max_length=50, editable=False)
def ivr_upload_audio_file(self):
# do something with self.file_path
return something
def save(self, *args, **kwargs):
self.prompt_id = self.ivr_upload_audio_file()
super(File, self).save(*args, **kwargs)
至于您的另一个问题,关于不显示该字段-您可以添加editable=False
以在admin和任何ModelForm
s中隐藏该字段-但是,如果您只想在admin中隐藏该字段,但在其他表单中显示该字段-您可以自定义管理员以不显示该字段:
@admin.register(File)
class FileAdmin(admin.ModelAdmin):
fields = ('file_name', 'file_path', 'file_type', 'duration',)
Django模型只是普通的Python类,您可以向类中添加任意数量的帮助器方法:
class File(models.Model):
# -- normal stuff
prompt_id = models.CharField(max_length=50, editable=False)
def ivr_upload_audio_file(self):
# do something with self.file_path
return something
def save(self, *args, **kwargs):
self.prompt_id = self.ivr_upload_audio_file()
super(File, self).save(*args, **kwargs)
至于您的另一个问题,关于不显示该字段-您可以添加editable=False
以在admin和任何ModelForm
s中隐藏该字段-但是,如果您只想在admin中隐藏该字段,但在其他表单中显示该字段-您可以自定义管理员以不显示该字段:
@admin.register(File)
class FileAdmin(admin.ModelAdmin):
fields = ('file_name', 'file_path', 'file_type', 'duration',)
Django模型只是普通的Python类,您可以向类中添加任意数量的帮助器方法:
class File(models.Model):
# -- normal stuff
prompt_id = models.CharField(max_length=50, editable=False)
def ivr_upload_audio_file(self):
# do something with self.file_path
return something
def save(self, *args, **kwargs):
self.prompt_id = self.ivr_upload_audio_file()
super(File, self).save(*args, **kwargs)
至于您的另一个问题,关于不显示该字段-您可以添加editable=False
以在admin和任何ModelForm
s中隐藏该字段-但是,如果您只想在admin中隐藏该字段,但在其他表单中显示该字段-您可以自定义管理员以不显示该字段:
@admin.register(File)
class FileAdmin(admin.ModelAdmin):
fields = ('file_name', 'file_path', 'file_type', 'duration',)
Django模型只是普通的Python类,您可以向类中添加任意数量的帮助器方法:
class File(models.Model):
# -- normal stuff
prompt_id = models.CharField(max_length=50, editable=False)
def ivr_upload_audio_file(self):
# do something with self.file_path
return something
def save(self, *args, **kwargs):
self.prompt_id = self.ivr_upload_audio_file()
super(File, self).save(*args, **kwargs)
至于您的另一个问题,关于不显示该字段-您可以添加editable=False
以在admin和任何ModelForm
s中隐藏该字段-但是,如果您只想在admin中隐藏该字段,但在其他表单中显示该字段-您可以自定义管理员以不显示该字段:
@admin.register(File)
class FileAdmin(admin.ModelAdmin):
fields = ('file_name', 'file_path', 'file_type', 'duration',)
只要可以导入到项目中,就可以在任何地方编写它
from <insert_path_here> import IvrUploadAudioFile # Function written somewhere else. You need to insert the correct path here
from django.db import models
class File(models.Model):
NORMAL = 'normal'
AD = 'ad'
FILE_TYPE_CHOICES = (
(NORMAL, 'Normal'),
(AD, 'Ad'),
)
file_name = models.CharField(max_length=50)
file_type = models.CharField(max_length=10, default=NORMAL,
choices=FILE_TYPE_CHOICES)
file_path = models.FileField('file', upload_to='documents/%Y/')
duration = models.IntegerField()
#prompt_id = models.CharField(max_length=50, editable = False)
def __unicode__(self):
return self.file_name
def save(self, *args, **kwargs):
self.prompt_id = IvrUploadAudioFile(self.file_path)
super(File, self).save(*args, **kwargs)
来自其他地方编写的import-IvrUploadAudioFile函数。您需要在此处插入正确的路径
从django.db导入模型
类文件(models.Model):
正常=‘正常’
AD='AD'
文件类型选择=(
(正常,'正常'),
(AD,"AD"),,
)
文件名=models.CharField(最大长度=50)
文件类型=models.CharField(最大长度=10,默认值=NORMAL,
选项=文件类型(选项)
file_path=models.FileField('file',upload_to='documents/%Y/'))
持续时间=models.IntegerField()
#prompt_id=models.CharField(最大长度=50,可编辑=False)
def ___; unicode(自):
返回self.file\u名称
def保存(自身、*args、**kwargs):
self.prompt\u id=IvrUploadAudioFile(self.file\u路径)
超级(文件,自我).save(*args,**kwargs)
要确保“管理”视图中的“提示id”字段不可编辑,请在模型中定义“提示id”字段时设置“可编辑=假”属性。只要可以将其导入到项目中,就可以将其写入任何位置
from <insert_path_here> import IvrUploadAudioFile # Function written somewhere else. You need to insert the correct path here
from django.db import models
class File(models.Model):
NORMAL = 'normal'
AD = 'ad'
FILE_TYPE_CHOICES = (
(NORMAL, 'Normal'),
(AD, 'Ad'),
)
file_name = models.CharField(max_length=50)
file_type = models.CharField(max_length=10, default=NORMAL,
choices=FILE_TYPE_CHOICES)
file_path = models.FileField('file', upload_to='documents/%Y/')
duration = models.IntegerField()
#prompt_id = models.CharField(max_length=50, editable = False)
def __unicode__(self):
return self.file_name
def save(self, *args, **kwargs):
self.prompt_id = IvrUploadAudioFile(self.file_path)
super(File, self).save(*args, **kwargs)
来自其他地方编写的import-IvrUploadAudioFile函数。您需要在此处插入正确的路径
从django.db导入模型
类文件(models.Model):
正常=‘正常’
AD='AD'
文件类型选择=(
(正常,'正常'),
(AD,"AD"),,
)
文件名=models.CharField(最大长度=50)
文件类型=models.CharField(最大长度=10,默认值=NORMAL,
选项=文件类型(选项)
file_path=models.FileField('file',upload_to='documents/%Y/'))
持续时间=models.IntegerField()
#prompt_id=models.CharField(最大长度=50,可编辑=False)
def ___; unicode(自):
返回self.file\u名称
def保存(自身、*args、**kwargs):
self.prompt\u id=IvrUploadAudioFile(self.file\u路径)
超级(文件,自我).save(*args,**kwargs)
要确保“管理”视图中的“提示id”字段不可编辑,请在模型中定义“提示id”字段时设置“可编辑=假”属性。只要可以将其导入到项目中,就可以将其写入任何位置
from <insert_path_here> import IvrUploadAudioFile # Function written somewhere else. You need to insert the correct path here
from django.db import models
class File(models.Model):
NORMAL = 'normal'
AD = 'ad'
FILE_TYPE_CHOICES = (
(NORMAL, 'Normal'),
(AD, 'Ad'),
)
file_name = models.CharField(max_length=50)
file_type = models.CharField(max_length=10, default=NORMAL,
choices=FILE_TYPE_CHOICES)
file_path = models.FileField('file', upload_to='documents/%Y/')
duration = models.IntegerField()
#prompt_id = models.CharField(max_length=50, editable = False)
def __unicode__(self):
return self.file_name
def save(self, *args, **kwargs):
self.prompt_id = IvrUploadAudioFile(self.file_path)
super(File, self).save(*args, **kwargs)
来自其他地方编写的import-IvrUploadAudioFile函数。您需要在此处插入正确的路径
从django.db导入模型
类文件(models.Model):
正常=‘正常’
AD='AD'
文件类型选择=(
(正常,'正常'),
(AD,"AD"),,
)
文件名=models.CharField(最大长度=50)
文件类型=models.CharField(最大长度