向用户添加徽章,以便在djang中执行任务

2024-06-17 06:55:20 发布

您现在位置:Python中文网/ 问答频道 /正文

你好Djangonauts, 今天大家好吗,我是Django新手,所以请原谅逻辑或代码中的任何愚蠢错误。我有一个用户,一个用户配置文件和一个posts模型。我想给用户徽章的数量张贴用户的帖子。例如,如果用户发布3个帖子,他/她将获得一个初学者徽章等。。。在

下面是我的用户档案模型.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_image = models.ImageField(default='', blank=True, null=True)
    badge_image = models.ImageField(default='', blank=True, null=True)#maybe default can be "static/images/beginner_image.jpg" but it does not work 

帖子模型.py

^{pr2}$

现在我想实现这样的目标:

 user = User.objects.get(username=request.user.username)
    if user.posts.count >= 3 :
             badge_image = '<img src="some image">'# I don't know how to make a image variable in views and models. I know how to use it in Django templates with {{image.url}}   
    elif user.posts.count >= 20 :
             badge_image = '<img src="some image">'
    else:
         badge_image ='<img src="beginner_image">'

在模型和视图中,我应该在哪里编写这些代码?如果我的问题太基本了,我很抱歉。我所学的项目都没有类似的情况


Tags: django代码用户badge模型imagesrctrue
1条回答
网友
1楼 · 发布于 2024-06-17 06:55:20

您可以不使用ImageField。为此,请使用模型的@property。您需要使用静态文件(check docshow to manage static with Django)将徽章图像(例如badge_img1.jpgbadge_img2.jpg)复制到director。重写Profile如下:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_image = models.ImageField(default='', blank=True, null=True)

    @property
    def badge_image(self):
        if self.user.posts.count() >= 20:
             badge_image = 'badge_img1.jpg'# I don't know how to make a image variable in views and models. I know how to use it in Django templates with {{image.url}}   
        elif self.user.posts.count() >= 3:
             badge_image = 'badge_img2.jpg'
        else:
             badge_image ='badge_img3.jpg'
        return badge_image

您可以这样显示当前用户的图像:

^{pr2}$

相关问题 更多 >