数据库: 文档有很多章节,章节有很多评论
在每个文档页面上,都有一个注释表单,可以让您选择该部分(使用ModelChoiceField)。问题是ModelChoiceField将包含所有文档的所有部分。
为了限制它们,我这样做:
class CommentForm(ModelForm):
def __init__(self, *args, **kwargs):
super(CommentForm, self).__init__(*args, **kwargs)
if self.instance:
logger.debug(self.instance.document_id) # Prints "None"
self.fields['section'].queryset = Section.objects.filter(document=self.instance.document)
# ^^^ Throws DoesNotExist as self.instance.document is None
我的观点只是:
form = CommentForm()
如何将CommentForm传递给文档ID?
编辑:在我的观点中尝试过:
d = Document.objects.get(id=id)
c = Comment(d)
form = CommentForm(c)
但是CommentForm
中的document_id仍然是None答案 0 :(得分:4)
初始化表单时,您可以传递文档ID:
class CommentForm(ModelForm):
def __init__(self, doc_id=None, *args, **kwargs):
if doc_id:
self.fields['section'].queryset = Section.objects.filter(document__id=doc_id)
并在视图中
def my_view(request):
...
doc = Document.objects(...)
form = CommentForm(doc_id = doc.id)
修改强>
我编辑了视图的第二行,我认为处理你的评论? (make doc.id)关键词争论