python - 如何将字符串值设置为 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'.
解决方案
这个默认值会保存到数据库中,而且很容易理解,字符串值不能保存到浮点字段中---数据库是静态类型的。
通常,如果你想做这样的事情,你应该使用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"
推荐阅读
- spring-boot - 服务同步问题
- php - Generate Word File in Laravel PHPWord - problem with add blade
- outlook - Office.context.mailbox.item.body.getAsync() 上的 OSF.DDA.Error 9020
- java - How to set `killSoftly` for a specific Jenkins job?
- python-3.x - How to make new label when the program is running in tkinter?
- .net - Google Safe Browsing API v4 implementation with C# returns null response
- javascript - File Drag & Drop not working in IE11 Javascript
- python - 带有python检测的Selenium限制了网页中的结果量
- c# - The member “IsChecked” is not recognized or is not accessible
- ios - Setting the size of UIImageView proportionally