Я создаю API с Django, который позволяет внешнему приложению отправлять сообщения в мой 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 .
Я читаю этот вопрос = , который спрашивает точно так же, но данный ответ не работает, потому что когда я пишу:
new.__getattribute__(relation_name) = my_authors
, как предлагается там, я получаю следующую ошибку, которая имеет смысл:
SyntaxError: can't assign to function call
Так как я могу добавить значение поля manytoMany по fieldName?