我创建了一个forms.ModelChoiceField,其中包含数据库中的项,但它显示了所有用户的数据。我只想显示连接用户的数据!谢谢你的帮助
我不需要创建模型。表单,因为我不想编辑或更新数据
views.py
def sms(request):
form2 = ListDataForm()
if request.method == 'POST':
form2 = ListDataForm(request.POST)
if form2.is_valid():
message = form2.cleaned_data["message"]
print(message)
else:
form2 = ListDataForm(request=request)
return render(request, "data_list/sms.html", {"form2": form2})
class List(models.Model):
item = models.CharField(max_length=100)
content = models.TextField()
site = models.CharField(max_length=11, choices=THE_SITE)
content_list = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.item
class ListDataForm(forms.Form):
message = forms.CharField(widget=forms.Textarea)
listdata = forms.ModelChoiceField(queryset=List.objects.all())
我没有写forms.ModelChoiceField(queryset=List.objects.all())
,而是写了forms.ModelChoiceField(queryset=List.objects.filter(author=request.user))
,但它不起作用
使用
get_queryset
调用表单时,将
request
作为参数传递这种方法的问题在于
queryset
值是在类创建时执行的,也就是说,当您第一次启动Python解释器并加载所有Django内容时。request
对象不是在这里创建的,而是在您开始从用户获取请求后创建的根据documentation,您可以在类实例化时执行此操作,将
queryset
参数设置为None
并写入forms.py
然后,在您看来,按如下方式创建此表单
views.py
根据the documentation限制ModelChoiceFields查询集的正确方法如下所示
相关问题 更多 >
编程相关推荐