我想创建一个对话框,它使用jquery的.load()函数在呈现的django表单中啜泣。 .load函数被传递给“alert”对象的pk。另外,在类函数可用的东西像self.request.user
所以我可以预先填补这些领域,在信息模型(models.py)如下图所示:如何将django的泛型CreateView与初始数据进行分类?
class Message(models.Model):
user = models.ForeignKey(User)
alert = models.ForeignKey(Alert)
date = models.DateTimeField()
message = models.TextField()
子类Django的CreateView的使得它很容易产生上下文中有的ModelForm(views.py)的一个实例:
class MessageDialogView(CreateView):
""" show html form fragment """
model = Message
template_name = "message.html"
def get_initial(self):
super(MessageDialogView, self).get_initial()
alert = Alert.objects.get(pk=self.request.POST.get("alert_id"))
user = self.request.user
self.initial = {"alert":alert.id, "user":user.id, "message":"test"}
return self.initial
def post(self, request, *args, **kwargs):
super(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)
return self.render_to_response(context)
的这里的问题是,self.initial
不会与形式呈现。我保证表单实际上是调用get_initial
,并且表单实例在post
中有适当的初始数据,但是当表单在模板message.html
中呈现时,它并不像我所期望的那样获取任何初始数据。有没有特别的窍门让这个工作?我搜索了文档(似乎缺乏基于泛型的类视图的示例)和源代码,但我看不到我缺少的东西。
请原谅我的无知,但不复制字典的风险是什么? – Harry 2014-01-13 14:58:59
@HarryGordon尝试: dict1 = { 'A':1, 'B':2} dict2 = dict1 dict2 [ 'B'] = 10 打印(dict1) – 2014-02-06 13:32:12
看起来像所有的换行丢失:( – 2014-02-06 13:34:24