我想創建一個對話框,它使用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