django的一个简单的可重用应用程序,它可以轻松处理任何应用程序中的任何对象。
django-fav的Python项目详细描述
django fav
django的一个简单的可重用应用程序,它可以轻松处理faving 从任何应用程序中释放任何对象。
它附带一个graphene(graphql)查询,用于在查询中启用fav。
要求
- Python3.4+
- Django 1.11
安装
pip install django-fav
- 将应用程序添加到您的设置中.py
INSTALLED_APPS=[..."fav",...]
- 同步数据库:
python manage.py migrate
用法:
收藏夹管理器
- 为用户和对象创建收藏夹实例:
>>>fromdjango.contrib.auth.modelsimportUser>>>frommusic.modelsimportSong>>>user=User.objects.get(username='gengue')>>>song=Song.objects.get(pk=1)>>>fav=Favorite.objects.create(user,song)
or:
>>>fav=Favorite.objects.create(user,1,Song)
or:
>>>fav=Favorite.objects.create(user,1,"music.Song")
- 获取给定用户喜爱的对象:
>>>fromdjango.contrib.auth.modelsimportUser>>>user=User.objects.get(username='gengue')>>>Favorite.objects.for_user(user)>>>[<Favorite:Favoriteobject1>,<Favorite:Favoriteobject2>,<Favorite:Favoriteobject3>]
- 现在,获取属于给定模型的用户喜爱的对象:
>>>fromdjango.contrib.auth.modelsimportUser>>>frommusic.modelsimportSong>>>user=User.objects.get(username='gengue')>>>Favorite.objects.for_user(user,model=Song)>>>[<Favorite:Favoriteobject1>,<Favorite:Favoriteobject2>,<Favorite:Favoriteobject3>]
- 获取任何用户偏好的给定模型的偏好对象实例:
>>>frommusic.modelsimportSong>>>Favorite.objects.for_model(Song)>>>[<Favorite:Favoriteobject1>,<Favorite:Favoriteobject2>,<Favorite:Favoriteobject3>]
- 获取给定对象和用户的收藏夹实例:
>>>fromdjango.contrib.auth.modelsimportUser>>>frommusic.modelsimportSong>>>user=User.objects.get(username='gengue')>>>song=Song.objects.get(pk=1)>>>fav=Favorite.objects.get_favorite(user,song)
- 获取给定对象的所有常用实例
>>>frommusic.modelsimportSong>>>song=Song.objects.get(pk=1)>>>fav=Favorite.objects.for_object(song)
图形ql
在settings.py
中,将grahene查询映射到django模型
FAV_MODELS={'CurrentUser':'core.user','User':'core.user','Track':'listen.Track',}
将url_renditions.graphql_schema.Query
添加到根查询和变异中。
importgrapheneimportfav.graphql_schemaclassQuery(...fav.graphql_schema.Query,graphene.ObjectType):passclassMutation(...fav.graphql_schema.Mutation,graphene.ObjectType):passschema=graphene.Schema(query=Query,mutation=Mutation)
查询
然后,您可以要求:
query { isInUserFavorites(objectId: "VHJhY2s6OA==") }
你会得到
{"data":{"isInUserFavorites":false}}
突变
mutation { favorite(input: {objectId: "VHJhY2s6OA=="}) { deleted created } }
你会得到
{"data":{"favorite":{"deleted":null,"created":true,}}}
谢谢
- 这个应用程序基于fork:https://github.com/gengue/django-favs,它基于streema的https://github.com/streema/django-favit的fork。