在鹡鸰上创建自定义用户粘性方法?

问题描述 投票:1回答:1

我一直在关注 协议盒 来创建一些模型。为了进行用户活动分析,我想保存用户ID、餐厅ID和访问餐厅页面的时间,其逻辑是当餐厅模型中的get_context函数时,它将使用跟踪函数将记录保存在TrackUserRestaurant模型中。

打印函数用于检查request.user.id和restaurant.id。

但是我不能在TrackUserRestaurant模型中得到任何新的记录。

我是不是理解错了什么?

我是Django和wagtail的新手。

class RestaurantPage(Page)
    .... #other fields
    view_count = models.PositiveIntegerField(default=0,
                                             editable=False)

    @property
    def restaurant_page(self):
        return self.get_parent().specific

    def get_context(self, request, *args, **kwargs):
        context = super(RestaurantPage, self).get_context(request, *args, **kwargs)
        context['restaurant_page'] = self.restaurant_page
        context['restaurant'] = self
        self.tracking(request)
        return context

    def tracking(self, request):
        current_user = request.user
        track = TrackUserRest
        track.user_id = 0
        track.restaurant_id = self.pk
        track.time = timezone.now()
        if request.user.id != None:
            print('user id:' + str(current_user.id))
            track.user = request.user.pk
        print('rest id:' + str(self.pk))
        return track.save(self)
class TrackUserRestaurant(models.Model):
    user_id = models.PositiveIntegerField(null=True)
    restaurant_id = models.PositiveIntegerField(blank=False, null=False)
    time = models.DateTimeField(auto_now=True, auto_now_add=False)

    class Meta:
        ordering = ('time', )

    def __str__(self):
        return 'Restaurant Tracking system: user.id({}) viewed rest.id({}) at timezone.({})'.format(self.user_id,
                                           self.restaurant_id,
                                           self.time)
django analysis wagtail
1个回答
1
投票
  1. 你的名字中使用的 tracking 方法 (TrackUserRest, rest)不符合您的类定义(TrackUserRestaurant, restaurant_id)
  2. 该行 track = TrackUserRest 不会产生 TrackUserRest 对象--它需要是 track = TrackUserRest(). 因此,下面的几行是在对 TrackUserRest 阶级,而非 TrackUserRest 对象。
  3. 有了这个固定。track.save(self) 应成为 track.save().
© www.soinside.com 2019 - 2024. All rights reserved.