Django __init__()得到一个意外的关键字参数';用户';当我尝试过滤时
我想筛选request.user已完成的餐厅。遵循文档,但我在尝试筛选时不断得到Django __init__()得到一个意外的关键字参数';用户';当我尝试过滤时,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我想筛选request.user已完成的餐厅。遵循文档,但我在尝试筛选时不断得到\uuuu init\uuuu()得到一个意外的关键字参数user forms.py models.py views.py detail.html 根据,这是ModelForm的\uuuu init\uuu方法的签名: def\uuu init\uuu(self,*args,**kwargs) 查看是否没有用户?这就是错误消息告诉您的。 如果您想获得用户,请尝试通过self.request.user(或类似的方式,具
\uuuu init\uuuu()
得到一个意外的关键字参数user
forms.py
models.py
views.py
detail.html
根据,这是ModelForm的\uuuu init\uuu
方法的签名:
def\uuu init\uuu(self,*args,**kwargs)
查看是否没有用户
?这就是错误消息告诉您的。
如果您想获得用户,请尝试通过self.request.user
(或类似的方式,具体取决于您使用的中间件)
希望有帮助 您忘记在视图中添加
form\u class
属性
class ItemCreate(CreateView):
model = Item
success_url = reverse_lazy('post:index')
form_class = LocationCreate # <- here
def form_valid(self, form):
if form.is_valid():
roote = restaurant.objects.filter(owner=self.request.user)
instance = form.save(commit=False)
instance.owner = self.request.user
return super(ItemCreate, self).form_valid(form)
def get_form_kwargs(self):
kwargs = super(ItemCreate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
class ItemCreate(CreateView):
型号=项目
success\u url=reverse\u lazy('post:index')
form_class=LocationCreate#请尽可能提供完整的堆栈跟踪,以便清除初始参数中的用户,并尝试仅使用过滤器self.request.user?谢谢您的帮助。作为旁注,我还得到了一个错误,说我需要在views.py中选择fields或form_类。我选择了中班
class Restaurant(models.Model):
restaurant_name = models.CharField(max_length=250)
restaurant_photo = models.ImageField(upload_to='roote_image')
category = models.ManyToManyField(Category)
timestamp = models.DateTimeField(auto_now_add=True, null=True)
updated = models.DateTimeField(auto_now=True, null=True)
owner = models.ForeignKey(User)
def get_absolute_url(self):
return reverse('post:detail', kwargs={'pk': self.pk})
class Item(models.Model):
restaurant= models.ForeignKey(Roote, on_delete=models.CASCADE, null=True)
food_name = models.CharField(max_length=1000)
category = models.CharField(max_length=250)
owner = models.ForeignKey(User)
def __str__(self):
return self.food_name
def get_absolute_url(self):
return reverse('post:detail', kwargs={'pk': self.pk})
class ItemCreate(CreateView):
model = Item
fields = ['restaurant','category ', 'food_name ']
success_url = reverse_lazy('post:index')
def form_valid(self, form):
if form.is_valid():
roote = restaurant.objects.filter(owner =self.request.user)
instance = form.save(commit=False)
instance.owner = self.request.user
return super(ItemCreate, self).form_valid(form)
def get_form_kwargs(self):
kwargs = super(ItemCreate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
{% block body %}
<div class="col-sm-6 col-sm-offset-3">
<img src="{{ restaurant.restaurant_photo.url }}" style="width: 250px;" >
<h1>{{ restaurant.restaurant_name }}</h1>
{% for item in restaurant.item_set.all %}
{{ item.food_name }}: {{ item.category}}
<br>
{% endfor %}
return form_class(**self.get_form_kwargs())
TypeError: __init__() got an unexpected keyword argument 'user'
class ItemCreate(CreateView):
model = Item
success_url = reverse_lazy('post:index')
form_class = LocationCreate # <- here
def form_valid(self, form):
if form.is_valid():
roote = restaurant.objects.filter(owner=self.request.user)
instance = form.save(commit=False)
instance.owner = self.request.user
return super(ItemCreate, self).form_valid(form)
def get_form_kwargs(self):
kwargs = super(ItemCreate, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs