首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DetailView的Django - CreateView

使用DetailView的Django - CreateView
EN

Stack Overflow用户
提问于 2017-01-08 00:24:12
回答 2查看 846关注 0票数 1

我正在试着做一个有日历的网页。每个日历都有事件。

我正在尝试制作一个表单,以便将事件添加到日历中。如果我们点击某个日历上的“添加新事件”,我们就可以做到这一点。

因此,据我所知,我需要两个视图组合- DetailView (为了知道我们应该把事件放在哪个日历上)和CreateView。

这就是我做这个的方法:

代码语言:javascript
复制
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

但是它不工作,当我点击它时,我得不到活动日历。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-08 00:43:45

可能,它不工作是因为self.model是一个类,而不是一个实例。据我所知,你有两个模型:事件和日历。事件具有指向Calendar的外键。要使其正常工作,您应该创建一个calendar实例并将其传递给form.instance.calendar。也许,您应该在get_context_data中这样做

代码语言:javascript
复制
context['calendar'] = Calendar.objects.get(1)
票数 0
EN

Stack Overflow用户

发布于 2017-01-08 01:57:42

在您发布的视图中,self.model引用model = Event行,因此您尝试将context['calendar']设置为事件,而不是日历。您需要检查self.request.calendar是否真的是一个日历模型实例,如果是,请尝试context['calendar'] = self.request.calendar

但是,您如何设置self.request.calendar?我怀疑这可能是bug的来源,除非您正在使用中间件来解决它。(您可能在文档中看到的request.user是由Django Middleware添加的。

您应该将日历添加为默认值,有关如何添加日历的信息,请参阅this question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41523624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档