У меня есть такая модель еды:
class Food(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
name = models.CharField(max_length=155,default='')
colorie = models.BigIntegerField(default=0)
carbohidrat = models.IntegerField(default=0)
cholestrol = models.IntegerField(default=0)
fat = models.IntegerField(default=0)
fiber = models.IntegerField(default=0)
protein = models.IntegerField(default=0)
saturatedfat = models.IntegerField(default=0)
def __str__(self):
return 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(attrs={'class':'form-control','placeholder':'میزان انرژی بر حسب کیلو کالری'}))
carbohidrat = forms.IntegerField(widget=forms.NumberInput(attrs={'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':'میزان فیبر بر حسب گرم'}))
protein = forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control','placeholder':'میزان پروتئین بر حسب گرم'}))
saturatedfat = forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control','placeholder':'میزان چربی اشباع شده بر حسب گرم'}))
def save(self,request):
data = self.cleaned_data
food = Food(user=request.user.username,name=data['name'],colorie=data['colorie'],carbohidrat=data['carbohidrat'],cholestrol=data['cholestrol'],fat=data['fat'],fiber=data['fiber'],protein=data['protein'],saturatedfat=data['saturatedfat'])
food.save()
class Meta:
model = Food
и Views.py:
@login_required
def addfood(request):
if request.method == 'POST':
form = addFood(request.POST)
if form.is_valid():
form.save(request)
return redirect('food:index')
else:
form = addFood()
return render(request,'addfood.html',{'form':form})
когда я заполняю форму и нажимаю кнопку «Отправить» django дайте мне «Невозможно назначить« nimaaram »»: «Food.user» должен быть ошибкой экземпляра «Пользователь». что мне делать, чтобы это исправить? совет: request.user.username в форме еды - "nimaaram", как я могу сохранить свою форму другим способом? Мне нужно, чтобы пользователь в модели питания заполнял автоматически (имя пользователя)