我正在使用 Django 构建一个 API,它允许外部应用程序将帖子发送到我的 API,然后它将接收到的数据插入到我的数据库中。
这是我的简化模型:
class Region(models.Model):
name = models.CharField(max_length=250)
class Event(models.Model):
name = models.CharField(max_length=250)
region = models.ManyToManyField(Region)
我从 api 收到一些新的事件数据,如下所示:
data = {
"name": "First Event",
"region": "4" # this is the ID of the region
}
我正在尝试创建一个这样的新事件:
Event.objects.create(**data)
但我收到以下错误:
Direct assignment to the forward side of a many-to-many set is prohibited. Use region.set() instead.
问题是我不能使用new_event.region.add(4)
原因region
是一个字符串,因为这是一个 API,所以该字段总是作为 json 键检索。
我读了这个问题https://stackoverflow.com/questions/8360867/update-many-to-many-field-in-django-with-field-name-in-variable# =它问的完全一样,但是当我写时,给出的答案不起作用:
new.__getattribute__(relation_name) = my_authors
正如那里所建议的,我收到以下错误,这是有道理的:
SyntaxError: can't assign to function call
那么如何通过 fieldName 添加多对多字段值呢?