我有一个这样定义的模型:
class UserDetail(models.Model):
user = models.ForeignKey(User, db_index=True, unique=True, related_name='details')
favourites = models.ManyToManyField(Article, related_name='favourited_by', blank=True)
Run Code Online (Sandbox Code Playgroud)
而我正在尝试做这样的事情:
article = get_object_or_404(Article, pk=id)
request.user.details.favourites.add(article)
Run Code Online (Sandbox Code Playgroud)
为什么不工作?
我收到这个错误:
'RelatedManager'对象没有属性'favorites'
我猜details不是正确的类型,但为什么不是呢?我该如何执行这样的查询?
jcd*_*yer 45
访问时user.details,它访问UserDetail.user外键的反向引用.外键本身没有指定一个User只能有一个UserDetail,所以django给你一个RelatedManager,你可以像常规一样过滤和查询Manager.所以你对你的.objects经理做同样的事情.你可以要求user.details.all(),user.details.filter(),user.details.get(),等等,这要么给你一个QuerySet,对象,或异常,取决于方法和结果.
Ala*_*air 10
尝试
request.user.details.get().favourites.add(article)
Run Code Online (Sandbox Code Playgroud)
这假定该用户已存在UserDetail对象,否则get()将引发异常.
| 归档时间: |
|
| 查看次数: |
32793 次 |
| 最近记录: |