Как установить dict key в качестве имени динамического поля для добавления значения m2m-полям в Django

Я хочу динамически устанавливать имя поля m2m из ключа словаря, чтобы не вводить каждое имя поля отдельно. Любая помощь будет очень признательна.

instance = ProductAttributes.objects.create(device_type=1, manufacturer=2, created_by=request.user)

device_dict = {
  'watch_series': WatchSeries.objects.get(series=mergedict['watch_series']),
  'watch_size': WatchSize.objects.get(size=mergedict['watch_size']),
  'color': Color.objects.get(id=mergedict['color']),
  'band_color': BandColor.objects.get(color=mergedict['band_color']), 
  'watch_connectivity': 1 if mergedict['is_gps'] == True else 2
 }

Вот как я пытаюсь добавить имя поля m2m после экземпляра

for key, val in device_dict.items():
    instance._meta.get_field(key).add(val)

Я получаю эту ошибку:

AttributeError: 'ManyToManyField' object has no attribute 'add'

Вам не нужно получать поле из Meta, вы можете получить к нему доступ непосредственно на экземпляре:

for key, val in device_dict.items():
    getattr(instance, key).add(val)
Вернуться на верх