[英]Django - CreateView with DetailView
我正在嘗試制作一個包含日歷的網頁。 每個日歷都有活動。
我正在嘗試創建一個表單來向日歷添加事件。 如果我們點擊某個日歷上的“添加新活動”,我們就可以做到這一點。
所以,據我所知,我需要結合兩個視圖 - DetailView(知道我們應該在哪個日歷上放置我們的事件)和CreateView。
我就是這樣做的:
class EventCreate(CreateView):
model = Event
form_class = EventForm
success_url = '/prijavljen/'
def form_valid(self, form):
form.instance.calendar = self.request.calendar
return super(EventCreate, self).form_valid(form)
def get_context_data(self, *args, **kwargs):
context = super(EventCreate, self).get_context_data(*args, **kwargs)
context['calendar'] = self.model
return context
但它不起作用,當我點擊它時,我沒有事件得到日歷。
任何幫助,將不勝感激。
可能它不起作用,因為self.model
是一個類,而不是一個實例。 據我所知,你有兩個模型:事件和日歷。 事件具有日歷的外鍵。 要使其工作,您應該創建一個日歷實例並將其傳遞給form.instance.calendar
。 也許,你應該在get_context_data
做這樣的事情:
context['calendar'] = Calendar.objects.get(1)
在您發布的視圖中, self.model
引用了line model = Event
,因此您嘗試將context['calendar']
設置為事件,而不是日歷。 您需要檢查self.request.calendar
是否實際上是日歷模型實例,如果是,請嘗試context['calendar'] = self.request.calendar
。
但是,你如何設置self.request.calendar
? 我懷疑這可能是一個bug的來源,除非你使用中間件來解決這個問題。 (您可能在文檔中看到的request.user
由Django Middleware添加。
您應該將日歷添加為默認值,請參閱此問題以了解如何執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.