Django-带有slug的公共配置文件-如何使用两个用户模型



我用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()
...

最新更新