我一直在关注 协议盒 来创建一些模型。为了进行用户活动分析,我想保存用户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)
tracking
方法 (TrackUserRest
, rest
)不符合您的类定义(TrackUserRestaurant
, restaurant_id
)track = TrackUserRest
不会产生 TrackUserRest
对象--它需要是 track = TrackUserRest()
. 因此,下面的几行是在对 TrackUserRest
阶级,而非 TrackUserRest
对象。track.save(self)
应成为 track.save()
.