我想将模型条目显示为表单的一部分,以便我可以更新它们。做这个的最好方式是什么?我正在使用脆皮形式。
我首先过滤我的对象,然后我想将此对象显示为一个表单,其中某些模型属性仅显示,某些属性正在更新。
本质上是一个表,其中包含无法修改的obj的所有属性,其中2个属性将在表单中更新。
forms.py:
class ReportSampleForm(forms.Form):
def __init__(self, *args, **kwargs):
super(ReportSampleForm, self).__init__(*args, **kwargs)
sample = self.data.get('sample_id', False)
obj = VariantAnnotationSampleRun.objects.filter(sample_run_id=sample)
self.helper = FormHelper()
self.fields['id'] = forms.ChoiceField(
required=True,
label='blah:',
widget=forms.CheckboxSelectMultiple,
choices=((s.id, (s.variant_annotation_id.variant_id, s.attribute1, s.attribute2)) for s in obj)
)
self.helper.form_method = 'POST'
这会显示带有variant_id,attribute1和attribute2的复选框,但我希望填写模型条目'证据'和'注释',如果选中复选框并提交表单,则数据库会针对该特定模型条目进行更新
models.py:
class VariantAnnotationSampleRun(models.Model):
variant_annotation_id = models.ForeignKey(VariantAnnotation,
attribute1 = models.DecimalField(max_digits=8, decimal_places=3)
attribute2 = models.IntegerField()
reported = models.BooleanField(default=False)
evidence = models.TextField(null=True, blank=True)
annotation = models.CharField(max_length=80, null=True, blank=True)
从我的观点来看,这可能不会构建一个完全定制的形式吗?
答案 0 :(得分:0)
使用ModelForm,选择要在其中使用的模型条目,并创建该表单的实例。
class MyModel (models.Model):
...
class MyForm (forms.ModelForm):
model = MyModel
def my_view(request):
obj = myModel.objects.get(id=1)
variables = {}
variables['form'] = myForm(instance=obj)
render (request, 'mypage.html', variables)
然后在mypage.html中包含{{ form }}
,无论您想要它。