ako*_*ian 5 django django-models django-forms
我有一个包含许多字段的模型,我正在为其创建两个部分表单
#model
class Line_Settings(models.Model):
....
line = models.ForeignKey(Line)
All = models.BooleanField(default=False)
Busy = models.BooleanField(default=False)
MOH = models.CharField(max_length=100, blank=True, null=True)
PLAR = models.CharField(max_length=100, blank=True, null=True)
....
def save(self, commit = True, *args, **kwargs):
....
#Partial model form1
class General(ModelForm):
class Meta:
model = Line_Settings
fields = ('MOH','PLAR')
#Partial model form2
class Common(ModelForm):
class Meta:
model = Line_Settings
fields = ('All','Busy')
Run Code Online (Sandbox Code Playgroud)
我已经覆盖了 Line_Settings 模型的保存以执行其他逻辑。
我需要能够将一些参数传递给覆盖的 save 方法以在我的逻辑中使用。
在我的视图中,我用 post 数据填充了两个部分表单,并且可以调用 save。
call_forwards = Common(request.POST, instance=line_settings)
general = General(request.POST, instance=line_settings)
Run Code Online (Sandbox Code Playgroud)
我需要像这样将参数传递给保存:
call_forwards.save(parameter="value")
general.save(parameter="value")
Run Code Online (Sandbox Code Playgroud)
我已经提到将参数传递给自定义 save() 方法
如果我覆盖了部分表单上的保存,我可以访问该参数。
# overwritten save of partial form
def save(self, parameter, commit=True):
print("In save overwrite Partial form Common "+str(parameter))
#how Can I pass this parameter to the model save overwirite?
super(Common, self).save(commit)
Run Code Online (Sandbox Code Playgroud)
从部分形式,如何使参数达到我的原始模型(Line_Settings)保存覆盖?
这能做到吗?提前感谢您的阅读!!
我能够通过在原始模型__init__方法中定义参数来实现这一点
def __init__(self, *args, **kwargs):
self.parameter= None
super(Line_Settings, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
然后在部分形式中,我可以访问此参数并将其设置为保存期间传递的值
def save(self, *args, **kwargs):
self.instance.parameter = kwargs.pop('parameter', None)
super(Common, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
在我看来,我将保存称为:
common = Common(request.POST, instance=line_settings)
common.save(parameter="something")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |