在Django中按字符串更改模型属性

时间:2018-12-11 21:24:23

标签: django

import json
from django.http import Http404, HttpResponse
from main.models import Personnages
def store_data(request):
    if request.is_ajax() and request.POST:
        value = request.POST.get("value")
        toChange = request.POST.get("name")
        id = request.POST.get("id") #A IMPORTER
        perso = Personnages.objects.get(id=id)
        perso.toChange = value
        perso.save()
        return HttpResponse(value+toChange)
    else :
        raise Http404

我已经编写了这段代码,但是问题是这部分不起作用:

perso.toChange = value

这似乎不起作用。我认为这是因为我从JSON而不是字段中提取了字符串。

这是供参考的模型:

class Personnages(models.Model):
    id = models.AutoField(primary_key=True)
    Joueur = models.ForeignKey(User, on_delete=models.PROTECT)
    Nom = models.CharField(max_length=40)
    Age = models.CharField(max_length=20)
    Genre = models.CharField(max_length=30)
    Date = models.DateTimeField(default=timezone.now, verbose_name="Date de parution")
    Image = models.ImageField(upload_to="imagePerso/", null=True)

1 个答案:

答案 0 :(得分:1)

我猜您正在尝试基于动态值设置属性。您正在寻找setattr方法(https://docs.python.org/3/library/functions.html#setattr

根据您的情况,替换

perso.toChange = value

使用

setattr(perso, toChange, value)

没有关系的是,在编写python代码时,建议遵循PEP-8中所述的Python编码标准。例如,toChange应该是to_change等等。