【问题标题】:is it possible to write if conditions inside models and if yes how?是否可以在模型内部编写 if 条件,如果是,如何编写?
【发布时间】:2021-07-12 12:44:46
【问题描述】:

这是我的模型,我正在尝试自动分配类别,如果用户获得大于 10 的分数,他将获得“传奇”类别,否则将获得“黄金”类别

class Intrest(models.Model):
    user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name="uuser")
    marks=models.IntegerField(default=0)
    choices = (
        ('Legendary', "Legendary"),
        ('Gold', "Gold"),
    )
    category=models.CharField(max_length=10,choices=choices,blank=True,null=True)

    def value(self):
        if self.marks==10:
            self.category="Legendary"
        else:
            self.category="gold"


    @property
    def __str__(self):
         return f"{self.user}"

我做了一个价值函数,但它不起作用,谁能告诉我如何实现这个?

【问题讨论】:

    标签: python django django-models django-views django-templates


    【解决方案1】:

    你可以override模型save()方法:

    class Intrest(models.Model):
        ...
    
        def save(self, *args, **kwargs):
            if self.marks > 10:
                self.category = "Legendary"
            else:
                self.category = "Gold"
            super().save(*args, **kwargs)

    【讨论】:

      【解决方案2】:

      是的,有可能:你需要使用@property 装饰器:

      @property
      def category(self):
          """Returns category depending of mark."""
          if self.marks==10:
              self.category="Legendary"
          else:
              self.category="Gold"
          
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-15
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 2016-10-25
      • 1970-01-01
      相关资源
      最近更新 更多