我正在通过 ip 获取视频观看次数,首先我创建一个视图来获取用户的 ip 并存储在此模型中
class UsersByIP(models.Model):
ip_user = models.TextField()
my video model
class Video(models.Model):
author = models.ForeignKey(Account, on_delete=models.CASCADE)
video = models.FileField(upload_to=get_video_filepath, validators=[validate_file_extension, validate_file_size])
viewers_by_ip = models.ManyToManyField(UsersByIP, default=None, blank=True)
然后这是我获取当前用户 ip 的视图,如果它不是视频视图的存储,则存储它
num_views_by_ip = Video.objects.annotate(
num_views_ip=Count('viewers_by_ip'),
).order_by('-viewers_by_ip')
data = get_object_or_404(num_views_by_ip, pk=pk)
if not request.user.is_authenticated:
__, created = Video.viewers_by_ip.through.objects.get_or_create(
video=data,
usersbyip=self.request.META.get('REMOTE_ADDR')
)
if created:
data.num_views_ip += 1