【问题标题】:How to convert a models.IntegerField() to an integer?如何将 models.IntegerField() 转换为整数?
【发布时间】:2019-10-05 18:04:38
【问题描述】:

我尝试为我的表的属性分配一个默认值。该值是另一个属性的值。 这是摘录

nombre_etudiant = models.IntergeField()
place_disponible =models.IntegerField(default=int(nombre_etudiant))

我尝试使用 to_pythyon(),我们告诉我:'to_python' 没有定义 怎么办!?

【问题讨论】:

  • 你不能那样做,因为你在“类”级别工作。
  • 好的。我明白了
  • 有一些方法可以在保存之前将一个字段复制到另一个字段中,例如:stackoverflow.com/q/4380879/67579

标签: django model


【解决方案1】:

您可以在__init__ 方法中添加属性初始化。

正确的做法是

class Foo(models):
    nombre_etudiant = models.IntergeField()
    place_disponible =models.IntegerField(blank=True,null=True)

    def __init__(self,*args,**kwargs):
        super(Foo, self).__init__(*args, **kwargs)
        if self.place_disponible is None:
            self.place_disponible = self.nombre_etudiant

【讨论】:

    【解决方案2】:

    你需要重写模型类的 save() 方法。

    class MyModel(models):
       nombre_etudiant = models.IntergeField()
       place_disponible =models.IntegerField()
    
       def save(self, *args, **kwargs):
           if not self.place_disponible:
               self.place_disponible = int(nombre_etudiant)
               super(Subject, self).save(*args, **kwargs)
    

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 2014-11-13
      • 1970-01-01
      • 2017-06-27
      • 2019-05-10
      • 2017-01-26
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多