1
代碼的問題是表單成功通過,但模型並沒有保存Profile模型中的多對多字段。 除食物和類型外,所有的值都被保存。 請幫我看看代碼。 型號爲什麼Form沒有保存多對多的字段值
class Relationship(models.Model):
status = models.CharField(max_length =30)
def __str__(self):
return self.status
class Food(models.Model):
food_name = models.CharField(max_length = 80)
def __str__(self):
return self.food_name
class City(models.Model):
city = models.CharField(max_length = 80)
def __str__(self):
return self.city
class Type(models.Model):
types = models.CharField(max_length =80)
def __str__(self):
return self.types
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
avatar = models.ImageField(upload_to = image_upload_to)
city = models.OneToOneField(City)
fav_food = models.ManyToManyField(Food)
relationship = models.OneToOneField(Relationship)
preferrs = models.ManyToManyField(Type)
def get_absolute_url(self):
return reverse('chatbot')
def __str__(self):
return self.user.get_username()
`
而且我的模型形式爲遵循
class ProfileForm(ModelForm):
class Meta:
model=Profile
fields = ['avatar','city','fav_food','relationship','preferrs']
,我的觀點是遵循
def ProfileCreate(request):
template="profile.html"
context={}
if request.user.get_username()=='':
return redirect('account_login')
if Profile.objects.all().filter(user__username=request.user.get_username()).count()>0:
return redirect('chatbot')
else:
form = ProfileForm(request.POST ,request.FILES or None)
if form.is_valid():
new_profile = form.save(commit=False)
user = User.objects.all().filter(username=request.user.get_username())[0]
new_profile.user=user
new_profile.save()
return redirect('chatbot')
context['form']=form
return render(request,template,context)
謝謝,而不是new_profile.save_m2m()它將form.save_m2m() –
良好的捕獲,修復。 – Alasdair