得到ManyRelatedManager我有这样一个模型:Django的 - 从字符串
class Book(models.Model):
authors = models.ManyToManyField(User) # User is a separate model
readers = models.ManyToManyField(User)
# ... rest of code
我试图创建自己的看法这需要三个输入之外的功能:一本书,一个字符串和一个用户。用户被添加到书的ManyRelatedManager,其相应的字段名称与字符串匹配。
例如,如果该功能被称为foo
:
def foo(book, field_name, user):
f = #... this is where I need help, should be a ManyRelatedManager that belongs to 'book'
f.add(user)
book.save()
调用foo(Book.objects.get(id=1), 'authors', User.objects.get(id=1))
将导致ID为1的用户被添加到字段“作者在书ID为1。类似地,主叫foo(Book.objects.get(id=1), 'readers', User.objects.get(id=1))
会导致ID为1的用户被添加到ID为1的书中的字段'读者'。
我试过使用Book._meta.get_field()
,但是这返回ManyToManyField本身,而不是ManyRelatedManager。有没有某种内置的方式来获得其字段名称匹配字符串的ManyRelatedManager?
对不起,如果描述混乱,我的问题很难说出来。如果任何人都可以理解我的问题,我们将非常感谢您的帮助谢谢!
我试过了,它返回一个ReverseManyRelatedObjectsDescriptor。我现在做错了什么? – Amit 2012-08-15 00:44:18
您需要在模型上使用它,而不是模型类。 – 2012-08-15 00:44:43
好的,谢谢你的帮助。现在它可以工作。 – Amit 2012-08-15 01:05:21