Skip to main content

一个简单的 django 可重用应用程序,可以轻松处理来自任何应用程序的任何对象的收藏和取消收藏。

项目描述

django-fav

一个简单的 django 可重用应用程序,可以轻松处理来自任何应用程序的任何对象的收藏和取消收藏。

它带有一个 Graphene (GraphQL) Query 以在您的查询中启用 favs。

要求

  • Python 3.4+
  • 姜戈 1.11

安装

pip install django-fav
  • 将应用程序添加到您的 settings.py
INSTALLED_APPS = [
  ...
  "fav",
  ...
]
  • 同步您的数据库:
python manage.py migrate

用法:

收藏夹管理器

  • 为用户和对象创建一个收藏实例:
>>> from django.contrib.auth.models import User
>>> from music.models import Song
>>> 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")
  • 获取给定用户收藏的对象:
>>> from django.contrib.auth.models import User
>>> user = User.objects.get(username='gengue')
>>> Favorite.objects.for_user(user)
>>> [<Favorite: Favorite object 1>, <Favorite: Favorite object 2>, <Favorite: Favorite object 3>]
  • 现在,获取属于给定模型的用户收藏对象:
>>> from django.contrib.auth.models import User
>>> from music.models import Song
>>> user = User.objects.get(username='gengue')
>>> Favorite.objects.for_user(user, model=Song)
>>> [<Favorite: Favorite object 1>, <Favorite: Favorite object 2>, <Favorite: Favorite object 3>]
  • 获取任何用户收藏的给定模型的收藏对象实例:
>>> from music.models import Song
>>> Favorite.objects.for_model(Song)
>>> [<Favorite: Favorite object 1>, <Favorite: Favorite object 2>, <Favorite: Favorite object 3>]
  • 获取给定对象和用户的收藏实例:
>>> from django.contrib.auth.models import User
>>> from music.models import Song
>>> user = User.objects.get(username='gengue')
>>> song = Song.objects.get(pk=1)
>>> fav = Favorite.objects.get_favorite(user, song)
  • 获取给定对象的所有收藏实例
>>> from music.models import Song
>>> song = Song.objects.get(pk=1)
>>> fav = Favorite.objects.for_object(song)

图形

settings.py中,将您的 grahene 查询映射到您的 django 模型

FAV_MODELS = {
    'CurrentUser': 'core.user',
    'User': 'core.user',
    'Track': 'listen.Track',
}

添加url_renditions.graphql_schema.Query到您的根查询和突变。

import graphene
import fav.graphql_schema

class Query(
        ...
        fav.graphql_schema.Query,
        graphene.ObjectType):
    pass

class Mutation(
        ...
        fav.graphql_schema.Mutation,
        graphene.ObjectType):
    pass


schema = 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,
    }
  }
}

谢谢

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

django-fav-0.3.tar.gz (5.0 kB 查看哈希)

已上传 source