Python Django视图:+;的操作数类型不受支持:';int';和';非类型';
我循环浏览数据库中存储的多个问题,每个问题有5个答案(开放、认真、外向、随和、神经质),我试图计算每个答案重复的次数并存储分数 型号:Python Django视图:+;的操作数类型不受支持:';int';和';非类型';,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我循环浏览数据库中存储的多个问题,每个问题有5个答案(开放、认真、外向、随和、神经质),我试图计算每个答案重复的次数并存储分数 型号: class Reponses(models.Model): ScoreOp = models.IntegerField(blank=True,null=True) ScoreCon = models.IntegerField(blank=True,null=True) ScoreExt = models.IntegerField(blan
class Reponses(models.Model):
ScoreOp = models.IntegerField(blank=True,null=True)
ScoreCon = models.IntegerField(blank=True,null=True)
ScoreExt = models.IntegerField(blank=True,null=True)
ScoreAgr = models.IntegerField(blank=True,null=True)
ScoreNeu = models.IntegerField(blank=True,null=True)
Product = models.OneToOneField("Product", on_delete=models.CASCADE,null=True)
class Personalite(models.Model):
Question = models.CharField(max_length=50,blank=True)
openness = models.CharField(max_length=20,blank=True)
conscientiousness = models.CharField(max_length=20,blank=True)
extraversion = models.CharField(max_length=20,blank=True)
agreeableness = models.CharField(max_length=20,blank=True)
neuroticism = models.CharField(max_length=20,blank=True)
models.ForeignKey("Reponses", on_delete=models.CASCADE,null=True)
观点:
def home_views(request):
questions= Personalite.objects.all()
product = Product.objects.get(id=5)
if request.method == 'POST':
try:
reponse = Reponses.objects.create()
reponse = Reponses(Product= product)
allRep = []
allRep = request.POST.getlist('poll')
for Rep in allRep:
print(Rep)
if Rep == 'openness':
reponse.ScoreOp = reponse.ScoreOp + 1
elif Rep == 'conscientiousness':
reponse.ScoreCon += 1
elif Rep == 'extraversion':
reponse.ScoreExt += 1
elif Rep == 'agreeableness':
reponse.ScoreAgr += 1
elif Rep == 'neuroticism':
reponse.ScoreNeu += 1
else :
print('HAHAHAHHAHAAH')
reponse.save()
except NameError:
print("An exception occurred",NameError)
context={
'questions':questions
}
return render(request , "home.html",context)
reponse=Reponses(Product=Product)
这不会保存需要调用save()
方法的响应对象,因此reponse.ScoreOp
为无
试试这个
首先正确地创建响应对象
reponse = Reponses.objects.create(Product=product)
另外,不必为整型字段指定null=True
,而是提供默认值0
ScoreOp = models.IntegerField(default=0) # properly migrate after change in model
现在在视图中
if Rep == 'openness':
reponse.ScoreOp += 1
您的问题是什么?在哪行发生了什么错误?