这是我的代码,我已经阅读了文档,看来这种方法是正确的方法,我没有收到任何错误,但没有看到任何结果。有人可以帮助我解决我做错了什么吗?
class BookCreate(LoginRequiredMixin, CreateView):
model = Book
fields = ['title', 'isbn', 'year', 'author', 'publisher']
def form_valid(self, form):
form.instance.owner = self.request.user
return super(BookCreate, self).form_valid(form)
def form_valid(self, form):
b = Book.objects.all
form.instance.author = ModelChoiceField(queryset=b.author_set.filter(owner=self.request.user))
return super(BookCreate, self).form_valid(form)
简单地author
从字段列表中排除,然后在form_valid
方法中设置它要容易得多:
class BookCreate(LoginRequiredMixin, CreateView):
model = Book
fields = ['title', 'isbn', 'year', 'publisher']
def form_valid(self, form):
form.instance.owner = self.request.user
return super(BookCreate, self).form_valid(form)
如果你这样做,确保你删除了你的第二种form_valid
方法,它取代了form_valid
上面的正确方法。
如果您必须author
将单个选项作为字段包含,则代码要复杂得多。您需要一个带有__init__
方法的自定义表单,该方法接受user
并设置该auth
字段的查询集。
然后您需要修改您的视图以使用您的自定义表单,并覆盖get_form_kwargs
以包含self.request.user
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句