django 通过变量更改字段

django change field by variable

我有这个:

class Character(models.Model):
    weapon = models.ForeignKey(item, related_name='weapon')
    shield = models.ForeignKey(item, related_name='shield')
    ...

class Item(models.Model):
    nom = models.CharField(max_length=30)
    choices = (
        ('weapon', 'weapon'),
        ('shield', 'shield'),
        ...
    )
    typeOf = models.CharField(max_length=15, choices=choices)
    ...

我想像这样用 item.typeof 的名称更新我的字符字段,但它不起作用。

character[item.typeof] = item
character.save()

我该怎么做?

使用内置setattr()函数:

setattr(character, item.typeOf, item)
character.save()