【问题标题】:How to create double and long text field from django models如何从 django 模型创建双长文本字段
【发布时间】:2015-12-07 13:49:00
【问题描述】:

如何使用 django 模型在 mysql 中创建 double 字段。我遇到了这个错误以及如何使用 django 创建longtext 数据类型

class Test(models.Model):
   maxcount = models.DoubleField(null=True) ## double DEFAULT NULL,
   cs = models.TextField()#longtext,

错误:

    maxcount = models.DoubleField(null=True) ##double DEFAULT NULL,
    AttributeError: 'module' object has no attribute 'DoubleField'

【问题讨论】:

    标签: python django django-models django-forms


    【解决方案1】:

    Django 中没有DoubleField,但FloatField [FloatField description in Django's Model field reference] 在mysql 中创建了double 数据类型。

    Django 的TextField 在mysql 中创建LONGTEXT 类型。没有简单的方法可以更改 TextField 行为以创建例如MEDIUMTEXT 输入 mysql。但是可以创建一个自定义模型字段来实现这一点:Writing custom model fields

    【讨论】:

    • 那么小整数呢? models.SmallIntegerField 创建小整数以及在这种情况下如何创建浮点字段
    【解决方案2】:

    【讨论】:

    • tiny int 怎么样?models.SmallIntegerField create small int 以及在这种情况下如何创建float字段
    • 类似于 PositiveIntegerField,但只允许某个(与数据库相关的)点下的值。在 Django 支持的所有数据库中,从 0 到 32767 的值都是安全的,如果你想使用 flot,请使用 FloatField:FloatField 在内部使用 Python 的 float 类型
    • 嗯,替代性我认为在这种情况下可能会更好。Ty
    • 这里的部分文字似乎丢失了。
    【解决方案3】:

    我认为您可能需要 DecimalField:https://docs.djangoproject.com/en/2.0/ref/models/fields/#decimalfield。它适用于 MySQL,您也可以将其用于整数值。

    在模型中声明字段

    balance = models.DecimalField(max_digits=20, decimal_places=2, default=Decimal(0.00))
    

    另外,考虑定义一个十进制上下文来创建您的实际值,如下所示:

    # defined in the settings.py file.
    DECIMAL_CONTEXT = Context(prec=6, rounding=ROUND_DOWN)
    

    这将确保通过您的应用程序兼容十进制对象,并创建如下值:

    DECIMAL_CONTEXT.create_decimal(0)
    DECIMAL_CONTEXT.create_decimal(500)
    DECIMAL_CONTEXT.create_decimal(5)
    DECIMAL_CONTEXT.create_decimal(0.50)
    

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2013-09-29
      • 1970-01-01
      • 2017-12-28
      • 2013-07-05
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      相关资源
      最近更新 更多