Django通用的关注系统
项目描述
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_batch。 users_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() 完成后发送。
这些信号将 users 和 target 作为关键字参数发送。
连接到这些信号的方法与其他 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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5b206ea34a7987ab0baf68eccf845dbd41e68bb5f4b0804ec3ba1c9224b52f7e |
|
MD5 | c47445918747f8d385b88604bbfd4f39 |
|
BLAKE2b-256 | ffe749a0fbe753ebe2d238a501935630af7b2bc2a6a3098a821be6e6a16e04a2 |