我正在使用 django ModelForms 来生成我的输入表单。
我在我的表单模型中指定只使用一组字段:
class <Model>Form(ModelForm):
class Meta:
model = <Model>
fields = ('date', 'comment_1')
我的模型定义为:
class <Model>(models.Model):
fk_id_1 = models.ForeignKey(<ExternalModel1>, null=False, blank=False)
fk_id_2 = models.ForeignKey(<ExternalModel2>, null=False, blank=False)
date = models.DateField()
comment_1 = models.CharField(max_length=100)
comment_2 = models.CharField(max_length=100)
但是,ForeignKey 框显示。
我怎么可能从表格中隐藏它们?另外,我如何从视图中设置这些保管箱的值并且不确定,在外部说 JQuery 来做到这一点?理想情况下,在“is_valid()”检查之后,我想设置我的外键的 ID,然后保存。也许我应该考虑用另一种方式解决这个问题?
这是视图:
def <Model>_add(request, trainee_id):
<Model>FormSet = modelformset_factory(<Model>)
if request.method == 'POST':
formset = <Model>FormSet(request.POST, request.FILES)
if formset.is_valid() and formset.has_changed():
formset.save()
# do something.
else:
formset = <Model>FormSet(queryset=<Model>.objects.none())
return render_to_response("<Model>_add.html", {
"formset": formset, "fk_id_1": fk_id_1,
}, context_instance=RequestContext(request))
我可以使用 JQuery 解决这个问题,但我想要一种更优雅的方法。
注意:我之前尝试过发布此内容,但我认为它不像这里那么清楚:Presetting values on a foreign entity relationship in a ModelForm ...我不明白关于 QuerySet 的确切说法。