得到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