簡體   English   中英

Django - 使用DetailView創建視圖

[英]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.userDjango Middleware添加。

您應該將日歷添加為默認值,請參閱此問題以了解如何執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM