跳转到主要内容

Django通用的关注系统

项目描述

Build Status

django-generic-follow是一个允许用户关注Django项目中任何模型的系统。

安装/设置

基础知识

首先,使用pip安装该包

pip install django-generic-follow

然后将generic_follow添加到您的INSTALLED_APPS

INSTALLED_APPS = (
    ...,
    'generic_follow',
)

用户模型

如果您使用的是auth.User用户模型,用户实例方法将为您设置。如果您使用自定义用户模型,您需要应用UserFollowMixin

from django.contrib.auth.models import AbstractUser
from generic_follow.model_mixins import UserFollowMixin

class MyCustomUser(UserFollowMixin, AbstractUser):
    ...

目标模型

要将便利方法添加到将要关注的模型中,请应用TargetFollowMixin

from django.db import models
from generic_follow.model_mixins import TargetFollowMixin


class Band(TargetFollowMixin, models.Model):
    name = models.CharField(max_length=255)

用法

关注/取消关注

要使用户关注模型实例,请使用 user.follow 方法。

user = User.objects.first()
band = Band.objects.get(name='Foals')

user.follow(band)

要使用户取消关注模型实例,只需调用 user.unfollow

user.unfollow(band)

检查用户是否正在关注模型实例,需要调用 user.is_following

user.is_following(band)
# true/false

检索方法

要查看用户正在关注的所有模型实例,请调用 user.get_follow_set 方法。

user.get_follow_set()
# [<Band: foals>]

可选地,可以通过提供 model 参数只返回该模型类型的关注实例。

user.get_follow_set(Photographer)
# []

在关注目标上,可以调用 model.get_follower_set 来检索所有关注者。

band.get_follower_set()

批量操作

要使一组用户关注给定的模型实例,请调用 create_batch 管理员方法。

user2 = ...

Follow.objects.create_batch(users=[user, user2], target=band)

要执行逆操作,请调用 delete_batch 管理员方法。

Follow.objects.delete_batch(users=[user, user2], target=band)

要在同一命令中使一些用户关注模型实例,而其他用户取消关注相同的模型实例,请使用 update_batchusers_follow 参数接受一个用户实例的 2 元组和一个布尔值,表示此用户是否应该关注该实例。

Follow.objects.update_batch(
    target=band,
    users_follow=[(user, True), (user2, False)]
)
# user will now be following foals, user2 will now not be following foals

信号

批量操作会发出信号,可以在项目中的其他地方使用。

follow_bulk_create:在 Follow.objects.create_batch() 完成后发送。

follow_bulk_delete:在 Follow.objects.delete_batch() 完成后发送。

这些信号将 userstarget 作为关键字参数发送。

连接到这些信号的方法与其他 Django 信号相同。

def bulk_create_callback(sender, **kwargs):
    ...

from generic_follow.signals import follow_bulk_create
follow_bulk_create.connect(bulk_create_callback, sender=Follow)

贡献

欢迎提交拉取请求/问题!

项目详细信息


下载文件

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

源分发

此版本没有可用的源分发文件。请参阅 生成分发存档 的教程。

构建分发

django_generic_follow-0.5.2-py2-none-any.whl (10.2 kB 查看散列)

上传时间 Python 2

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面