Как то раз мне понадобилось начальные данные в форму создания. Это решилось довольно просто переопределением метода get_initial
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MessageDialogView</span>(<span class="hljs-params">CreateView</span>):</span> <span class="hljs-string">""" show html form fragment """</span> model = Message template_name = <span class="hljs-string">"message.html"</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get_initial</span>(<span class="hljs-params">self</span>):</span> <span class="hljs-built_in">super</span>(MessageDialogView, self).get_initial() alert = Alert.objects.get(pk=self.request.POST.get(<span class="hljs-string">"alert_id"</span>)) user = self.request.user self.initial = {<span class="hljs-string">"alert"</span>:alert.<span class="hljs-built_in">id</span>, <span class="hljs-string">"user"</span>:user.<span class="hljs-built_in">id</span>, <span class="hljs-string">"message"</span>:<span class="hljs-string">"test"</span>} <span class="hljs-keyword">return</span> self.initial <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">post</span>(<span class="hljs-params">self, request, *args, **kwargs</span>):</span> <span class="hljs-built_in">super</span>(MessageDialogView, self).post(request, *args, **kwargs) form_class = self.get_form_class() form = self.get_form(form_class) context = self.get_context_data(form=form) <span class="hljs-keyword">return</span> self.render_to_response(context) |