django - 在鹡鸰上创建自定义用户跟踪方法?
问题描述
我一直跟随accordbox创建一些模型。对于用户活动分析,我想在访问的 RestaurantPage 上保存 user_id、restaurant_id 和时间。逻辑是在Restaurant Model 中get_context 函数时,它会使用tracking 函数来保存TrackUserRestaurant 模型中的记录。
print 函数用于检查 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)
解决方案
tracking
您的方法中使用的名称( , ) 与您的类定义 (,TrackUserRest
)不rest
匹配TrackUserRestaurant
restaurant_id
- 该行
track = TrackUserRest
不会创建TrackUserRest
对象 - 它需要是track = TrackUserRest()
. 因此,以下几行是在TrackUserRest
类上设置属性,而不是TrackUserRest
对象。 - 有了这个固定,
track.save(self)
应该变成track.save()
.
推荐阅读
- mysql - 在加入表之前使用聚合函数
- javascript - 即使您在输入字段中有多个字母/数字(rfid 代码),如何让它只说一次?
- javascript - 如何删除 Javascript 创建的类?
- docker - 如何传递附加到它的覆盖网络的dockerized程序IP地址
- python - Generators, yield, send python
- r - 从R中的日期中提取年份和月份
- javascript - 安装扩展后找不到模块
- javascript - 在一个请求中禁用 aaplication/json
- php - 如何在php echo的特定部分使用链接(href)?
- javascript - Highcharts 系列,链接到多个系列