我有一个这样的模型:
class Book(models.Model):
authors = models.ManyToManyField(User) # User is a separate model
readers = models.ManyToManyField(User)
# ... rest of code
我正在尝试在我的视图之外创建一个函数,该函数需要三个输入:一本书、一个字符串和一个用户。User 被添加到 Book 的 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?
抱歉,如果该描述令人困惑,我的问题很难用语言表达。如果有人能理解我的问题,我们将不胜感激。谢谢!