Python 无法分配"';尼马拉姆'&引用;:&引用;食品.用户“;必须是一个";“用户”;Django实例

Python 无法分配"';尼马拉姆'&引用;:&引用;食品.用户“;必须是一个";“用户”;Django实例,python,django,Python,Django,我有一个这样的食物模型: 类食品(models.Model): user=models.ForeignKey(用户,on_delete=models.CASCADE) name=models.CharField(最大长度=155,默认值=“”) colorie=models.BigIntegerField(默认值=0) carbohidrat=models.IntegerField(默认值=0) cholestrol=models.IntegerField(默认值=0) fat=models.I

我有一个这样的食物模型:

类食品(models.Model):
user=models.ForeignKey(用户,on_delete=models.CASCADE)
name=models.CharField(最大长度=155,默认值=“”)
colorie=models.BigIntegerField(默认值=0)
carbohidrat=models.IntegerField(默认值=0)
cholestrol=models.IntegerField(默认值=0)
fat=models.IntegerField(默认值=0)
光纤=型号。整数字段(默认值=0)
protein=models.IntegerField(默认值=0)
saturatedfat=models.IntegerField(默认值为0)
定义(自我):
返回self.name
我有这样的食物形式:

class addFood(forms.Form):
name=forms.CharField(max_length=40,widget=forms.TextInput(attrs={'class':'form-control','placeholder':'
colorie=forms.IntegerField(widget=forms.NumberInput(属性={'class':'form-control','placeholder':'
carbohidrat=forms.IntegerField(widget=forms.NumberInput(属性={'class':'form-control','placeholder':'
cholestrol=forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control','placeholder':'
fat=forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control','placeholder':'
fiber=forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control','placeholder':'
蛋白质=forms.IntegerField(小部件=forms.NumberInput(属性={'class':'form-control','placeholder':'
saturatedfat=forms.IntegerField(widget=forms.NumberInput(属性={'class':'form-control','placeholder':'
def保存(自我、请求):
数据=自清理的数据
食品=食品(用户=请求.用户.用户名,名称=数据['name'],颜色=数据['colorie'],卡波希德鼠=数据['carbohidrat'],胆固醇=数据['cholestrol'],脂肪=数据['fat'],纤维=数据['fiber'],蛋白质=数据['protein'],饱和脂肪=数据['saturatedfat'])
食物。保存
类元:
模型=食物
和Views.py:

@需要登录\u
def添加食物(请求):
如果request.method==“POST”:
表单=添加食物(请求.发布)
如果form.is_有效():
表单保存(请求)
返回重定向('food:index')
其他:
form=addFood()
返回呈现(请求,'addfood.html',{'form':form})
当我填写表单并按submit django时,给我'不能分配''nimaaram':“Food.user”必须是“user”实例'错误。 我该怎么做才能修好它? 提示:食物表单中的request.user.username是“nimaaram” 如何以另一种方式保存表单?
我需要食品模型中的用户自动填写(用户名)

应为
用户
属性分配
用户
对象,而不是其
用户名
,因此:

class addFood(forms.Form):
    
    # …
    
    def save(self,request):
        data = self.cleaned_data
        food = Food.objects.create(
            user=request.user,
            name=data['name'],
            colorie=data['colorie'],
            carbohidrat=data['carbohidrat'],
            cholestrol=data['cholestrol'],
            fat=data['fat'],
            fiber=data['fiber'],
            protein=data['protein'],
            saturatedfat=data['saturatedfat']
        )
    class Meta:
        model = Food
class addFood(forms.Form):
# …
def保存(自我、请求):
数据=自清理的数据
食物=食物。对象。创建(
user=request.user,
名称=数据['name'],
颜色=数据['colorie'],
carbohidrat=数据['carbohidrat'],
cholestrol=数据['cholestrol'],
fat=数据['fat'],
光纤=数据[“光纤”],
蛋白质=数据[‘蛋白质’],
saturatedfat=数据['saturatedfat']
)
类元:

model=Food
在表单中的save方法中使用
request.user
而不是
request.user.username