python - 字段 'id' 需要一个数字,但得到了django中的错误
问题描述
我有这个表格:
class addMeal(forms.Form):
name = forms.CharField(
max_length=40,
widget=forms.TextInput(attrs={'class':'form-control','placeholder':'نام وعده'})
)
foods = forms.ModelMultipleChoiceField(
queryset=Food.objects.none(),
widget=forms.SelectMultiple(attrs={'class':'form-control'})
)
def save(self,request):
data = self.cleaned_data
meal = Meals(name=data['name'],user=request.user,foods=data['foods'])
meal.save()
def __init__(self, user=None,*args, **kwargs, ):
super().__init__(*args, **kwargs)
if user is not None:
self.fields['foods'].queryset = Food.objects.filter(user=user)
class Meta:
model = Meals
这个观点:
@login_required
def addmeal(request):
if request.method == 'POST':
form = addMeal(request.POST)
if form.is_valid():
form.save(request)
return redirect('food:index')
else:
form = addMeal(user=request.user)
return render(request,'addmeal.html',{'form':form})
当我填写表格并按提交 django 时给我错误(字段 'id' 需要一个数字但得到 <QueryDict: {'csrfmiddlewaretoken': ['C2B8y3kLCa5IQ0S5Mvk7Tw0NTU4pNlYicppWlsIL1LCrcc8AuCQzjJkqWNUot4z6'], 'name': ['شام'], 'foods': ['1']}>.)。我该怎么做才能解决它?
解决方案
由于user
是第一个参数,因此您将数据作为第二个参数传递,因此:
@login_required
def addmeal(request):
if request.method == 'POST':
form = addMeal(user=request.user, data=request.POST)
if form.is_valid():
form.save(request)
return redirect('food:index')
else:
form = addMeal(user=request.user)
return render(request,'addmeal.html',{'form':form})
推荐阅读
- highcharts - 如何使用 highcharts 制作圆环图?
- android - 带有 iroha 库的 Android 构建版本
- c++ - 如何在主函数之外创建对象?
- java - 直线与正方形的交点
- xcode - 提交应用程序以供审核,然后将其删除以从 Xcode 对应用程序进行更改
- excel - 如何显示语法中的值?
- jasmine - 测试完成后抛出错误时导致测试失败
- ruby - 如何在 Ruby 中获得最大 100 个哈希值?
- python - 短语生成器正在打印错误的输出
- reactjs - 配置对象无效。Webpack 已使用与 ReactJS 中的 API 模式不匹配的配置对象进行初始化