Django Rest Framework 针对不同帐户第 3 层构建了不同的图像大小,并且可以创建新的

问题描述 投票:0回答:2
#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-models django-rest-framework membership
2个回答
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
投票

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

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}'
© www.soinside.com 2019 - 2024. All rights reserved.