【发布时间】:2012-01-11 18:00:30
【问题描述】:
当字段名称存储在变量中时,我希望能够更新模型上的多对多字段。对于普通字段(在构造函数中使用 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 的解决方案 - 尽管它们确实有效,但并不理想。另外,这样做时我不能以任何方式更改模型,那是别人的代码。谢谢!
谢谢各位。 本
【问题讨论】:
标签: django django-models django-admin many-to-many