这是我的代码,我已阅读文档,似乎这种方法是正确的方法,我没有错误但我看不到任何结果。有人可以帮我解决我的错误吗?
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)
答案 0 :(得分:0)
从字段列表中简单地排除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
。