Django Rest 框架针对不同帐户层的不同映像大小 3 内置和制作新

Django Rest Framework different image size for different account tiers 3 build in and possibility to make new

提问人:Gio 提问时间:3/9/2023 更新时间:10/26/2023 访问量:68

问:

#a link to a thumbnail that's 200px in height - Basic
#a link to a thumbnail that's 400px in height - Basic and Intermediate
#a link to the originally uploaded image - Basic, Intermediate and Premium
class Profile(models.Model):

        MEMBERSHIP = (
            ('BASIC', 'Basic'),
            ('PREMIUM', 'Premium'),
            ('ENTERPRISE', 'Enterprise')
        )

        user = models.OneToOneField(User, on_delete=models.CASCADE)
        membership = models.CharField(max_length=10, choices=MEMBERSHIP, default='BASIC')

        def __str__(self):
            return f'{self.user.username} {self.membership} Profile'

我知道如何进行 3 层构建的唯一方法如上所述。

我不知道如何从管理面板添加具有不同图像大小的更多会员资格。我想将它们作为一个模型,并根据需要添加它以创建新用户。

python django django-rest-framework 成员

评论


答:

1赞 Mahmoud Nasser 3/9/2023 #1

您可以创建一个名为 :Membership

class Membership(models.Model):
  name = models.CharField(max_length=10, default='BASIC')
  thumbnail_max_width = models.IntgerField()
  thumbnail_max_height = models.IntgerField()


 class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    membership = models.ForigenKey(Membership)

    def __str__(self):
        return f'{self.user.username} {self.membership} Profile'

现在,您可以从管理面板创建所需的所有成员资格类型

1赞 Iqbal Hussain 3/9/2023 #2

实际上,为了允许用户为不同的付费级别使用不同的图像尺寸,您可以为基本和高级添加两种图像尺寸。

class Profile(models.Model):

    MEMBERSHIP = (
        ('BASIC', 'Basic'),
        ('PREMIUM', 'Premium'),
        ('ENTERPRISE', 'Enterprise')
    )

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    membership = models.CharField(max_length=10, choices=MEMBERSHIP, default='BASIC')
    basic_thumbnail_height = models.PositiveIntegerField(default=200)
    premium_thumbnail_height = models.PositiveIntegerField(default=400)

    def __str__(self):
        return f'{self.user.username} {self.membership} Profile'

    def thumbnail_link(self):
        if self.membership == 'BASIC':
            return f'https://something.com/thumbnail/{self.user.id}/{self.basic_thumbnail_height}'
        elif self.membership == 'PREMIUM':
            return f'https://something.com/thumbnail/{self.user.id}/{self.premium_thumbnail_height}'
        else:
            return f'https://something.com/original/{self.user.id}'