Я хочу иметь возможность обновлять поле «многие ко многим» в модели, когда имя поля сохраняется в переменной.Это относительно просто для обычного поля (с kwargs в конструкторе) или даже внешнего ключа, но не так для поля «многие ко многим».Вот ситуация:
class Book(models.Model):
title = models.CharField(max_length=30)
authors = models.ManyToManyField(Author)
field_name = 'title'
new = Book(**{field_name:'My Book'}) # This sets title to mybook
new.save()
my_authors = Author.objects.filter(name='Ben') # Get some authors
field_name = 'authors'
new.XXXXXX = my_authors # Add them
Как сделать бит XXXXXX - это то, что я спрашиваю!Он не принимается в kwargs, как и другие поля, так как сначала вам нужен первичный ключ, и это не может произойти, пока он не будет сохранен.Есть идеи?Любая помощь очень ценится!Это должно быть возможно - администратор django должен сделать это как-то, но я не могу найти где.
* Редактировать - Я в идеале ищу решение, которое не использует __getattributeили __setattr - хотя они работают, они не идеальны.Кроме того, я не могу изменить модель каким-либо образом, делая это, это чужой код.Спасибо!
Спасибо, ребята.Ben