Django配置文件显示完成百分比

Gra*_*ntU 1 django django-models

我有一个用户档案模型.我想要一个新的模型方法给我一个关于如何完成配置文件的分数.例如:

Name 10%
Mobile 50%
Gender 10%
Website 10%
Location 10%
birth_date 10%
Run Code Online (Sandbox Code Playgroud)

这意味着,如果用户填写了名称移动设备,他们的个人资料将完成60%.

有人能让我开始研究如何完成这样的事情吗?谢谢:

我的型号:

class Profile(UserenaLanguageBaseProfile):
    """ Default profile """
    GENDER_CHOICES = (
        (1, _('Male')),
        (2, _('Female')),
    )

    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='profile')

    gender = models.PositiveSmallIntegerField(_('gender'),
                                              choices=GENDER_CHOICES,
                                              blank=True,
                                              null=True)
    mobile = models.CharField(max_length=32, blank=True)
    website = models.URLField(_('website'), blank=True, )
    location = models.CharField(_('location'), max_length=255, blank=True)
    birth_date = models.DateField(_('birth date'), blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

kar*_*ikr 7

一种方法可能是:

class Profile(UserenaLanguageBaseProfile):
    #attributes

    @property 
    def percentage_complete(self):
        percent = { 'name': 10, 'mobile': 50, 'website': 10, 'location': 10, 'birth_date': 10, 'gender': 10}
        total = 0
        if self.gender:
            total += percent.get('gender', 0)
        if self.name:
            total += percent.get('name', 0)
        #and so on
        return "%s"%(total)
Run Code Online (Sandbox Code Playgroud)

然后profile.percentage_complete给你完整性.由于您正在管理字典,因此您可以完全控制权重,并确保值为百分比.