【发布时间】:2016-03-26 16:09:18
【问题描述】:
代码的问题是表单已成功通过,但模型没有保存 Profile 模型中的多对多字段。 除食物和类型外,所有值都已保存。 请帮我写代码。 型号
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)
【问题讨论】:
标签: django django-models django-forms python-3.5