Django从字符串获取ManyRelatedManager

2024-05-23 18:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的模型:

class Book(models.Model):
     authors = models.ManyToManyField(User) # User is a separate model
     readers = models.ManyToManyField(User)
     # ... rest of code

我试图在我的视图之外创建一个函数,它需要三个输入:一本书、一个字符串和一个用户。用户被添加到图书的ManyRelatedManager,其对应的字段名与字符串匹配。在

例如,如果函数被调用foo

^{pr2}$

调用foo(Book.objects.get(id=1), 'authors', User.objects.get(id=1))将导致id为1的用户被添加到id为1的书中的“authors”字段中。类似地,调用foo(Book.objects.get(id=1), 'readers', User.objects.get(id=1))将导致id为1的用户被添加到id为1的图书中的字段“readers”中。在

我尝试使用Book._meta.get_field(),但这返回了ManyToManyField本身,而不是ManyRelatedManager。是否有某种内置的方法来获取字段名与字符串匹配的ManyRelatedManager?在

抱歉,如果这个描述令人困惑,我的问题很难用语言表达。如果有人能理解我的问题,感谢你的帮助。谢谢!在


Tags: 函数字符串用户idgetobjectsfoomodels