我用slug创建了一个公共配置文件->用户段塞/
我的问题是如何知道current_user(页面片段的用户有一个活跃的故事(:
{% if current_user.story.is_active %}new_story_available{% else %}no{% endif %}
这不起作用,因为current_user与用户配置文件模型有关。有人有主意吗?
user.views.py
@login_required(login_url='/cooker/login')
def userpublicpostview(request, slug):
user = get_object_or_404(User.objects.select_related('userprofile'), username=slug)
...
storys = Story.objects.filter(user_id=user.id)
return render(request, 'user_public_profile.html', {
'current_user': user,
...
'user_storys': storys,
})
用户/型号.py
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
...
is_online = models.BooleanField(default=False)
slug = models.SlugField(editable=False)
class Story(models.Model):
user = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE,related_name='user_storys')
title = models.CharField(max_length=200, unique=False)
image = models.ImageField(upload_to='story/')
created_on = models.DateTimeField(auto_now_add=True)
@property
def is_active(self):
now = timezone.now()
if (self.created_on + timedelta(days=1)) > now:
return True
return False
用户没有单个story
,它有多个user_storys
:
{% if current_user.user_storys.active().exists() %}new_story_available{% else %}no{% endif %}
然后更新您的Story
型号,使其具有active
过滤器:
class StoryManager(models.Manager):
def active(self):
return self.get_queryset().filter(created_at__gt=timezone.now() - timedelta(days=1))
class Story(models.Model):
objects = StoryManager()
...