首页 > 解决方案 > 如何将字符串值设置为 django 模型中浮点字段的默认值

问题描述

我无法在我的 Django 模型的浮点字段中将字符串值设置为默认值。这是我的代码:

from django.db import models

class Product(models.Model):
    Name = models.CharField(max_length=700, null=True)
    Price = models.FloatField(null=True)
    Screen_size = models.FloatField(max_length=300, blank=True ,default="Not mentioned by the seller" , null=True)
    Focus_type = models.CharField(max_length=300, blank=True ,default="Not mentioned by the seller" , null=True)

当我尝试运行代码时,出现此错误:

ValueError: Field 'Screen_size' expected a number but got 'Not mentioned by the seller'.

标签: pythondjangodjango-models

解决方案


这个默认值会保存到数据库中,而且很容易理解,字符串值不能保存到浮点字段中---数据库是静态类型的。

通常,如果你想做这样的事情,你应该使用property装饰器。

class Product(models.Model):
    Name = models.CharField(max_length=700, null=True)
    Price = models.FloatField(null=True)
    Screen_size = models.FloatField(blank=True ,null=True)
    Focus_type = models.CharField(max_length=300, blank=True ,default="Not mentioned by the seller" , null=True)

    @property
    def screen_size(self):
        if self.Screen_size is not None:
            return self.Screen_size
        return "Not mentioned by the seller"

推荐阅读