Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从对象中检索变量以在Django中更新它?_Python_Django - Fatal编程技术网

Python 如何从对象中检索变量以在Django中更新它?

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)

我有一个模型分数,它以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)
    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()
方法将一个简单字符串作为参数。