Python 如何从对象中检索变量以在Django中更新它?
我有一个模型分数,它以q-id作为列。 例: 现在我想访问q的值(q1到q100)并更新该值Python 如何从对象中检索变量以在Django中更新它?,python,django,Python,Django,我有一个模型分数,它以q-id作为列。 例: 现在我想访问q的值(q1到q100)并更新该值 def ballot_update(request,group_id,q_id): group = get_object_or_404(Group, pk=group_id) if request.POST: vote = request.POST.get('vote') q_id = 'q'+ q_id score = Score.objects.get(pk=vote)
def ballot_update(request,group_id,q_id):
group = get_object_or_404(Group, pk=group_id)
if request.POST:
vote = request.POST.get('vote')
q_id = 'q'+ q_id
score = Score.objects.get(pk=vote)
newscore = 10 + score.q_id
s_update = Score.objects.filter(pk=vote).update(**{q_id:newscore})
return ballot_home(request,group_id)
我得到错误“Score”对象没有属性“q_id”
附加的是快照您应该使用
getattr()
按名称获取对象的属性:
newscore = 10 + getattr(score, q_id)
您应该使用
getattr()
按名称获取对象的属性:
newscore = 10 + getattr(score, q_id)
我想你应该改变你的模式:
class Score(models.Model):
group_id = models.ForeignKey(Group)
name = models.CharField(max_length=60)
gender = models.CharField(max_length=1,default = False )
class Qs(models.Model):
score = models.ForeignKey(Score)
number = models.IntegerField()
q_value = models.DecimalField(max_digits=20,decimal_places=8)
那么您的模型中没有100个q_。您可以轻松访问q值。我想您应该更改您的模型:
class Score(models.Model):
group_id = models.ForeignKey(Group)
name = models.CharField(max_length=60)
gender = models.CharField(max_length=1,default = False )
class Qs(models.Model):
score = models.ForeignKey(Score)
number = models.IntegerField()
q_value = models.DecimalField(max_digits=20,decimal_places=8)
那么您的模型中没有100个q_。您可以轻松访问q值。如果我想使用order\U by(q\U id),我应该怎么做?例如:Score.objects.filter(group\u id=group)。order\u by(q\u id)。reverse()您应该按照编写的那样执行:
order\u by(q\u id)
。order\u by()
方法以一个简单字符串作为参数。如果我想使用order\u by(q\u id),我应该怎么做?例如:Score.objects.filter(group\u id=group)。order\u by(q\u id)。reverse()您应该按照编写的那样执行:order\u by(q\u id)
。order\u by()
方法将一个简单字符串作为参数。