CharField 不保存
CharField not saving
我是一个django的新手,但我一直没能发现这是在别的地方。我根据 djangogirls 教程设置了 django 并创建了一个看起来像这样的模型:
class Grimmage(models.Model):
gStart = models.CharField(max_length=100, default='Not set'),
gStartLat = models.FloatField(default=0.0)
gStartLong = models.FloatField(default=0.0)
# [...]
gUpdateDate = models.DateField(default=timezone.now)
gUser = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
我已经完成了数据库迁移工作,我尝试使用 Grimmage.objects.create(gUser=request.user) 创建对象。 (我已经尝试过其他方法来创建具有相同结果的对象。)
这是我现在在各自视图中的内容(为什么我不再次手动设置默认值稍后会清楚):
grim = Grimmage.objects.create(gUser=user)
grim.gStart = 'Not set'
grim.gFinish = 'Not set'
grim.save()
最终,我正在创建的视图应检查值是否已从 'Not set' 更改为从用户获取值。所以,这个对象还有一个方法叫做'whatsNext()'到return接下来需要填写的值是:
def whatsNext(self):
''' Returns a sting to indicate what value is needed next '''
# Assumes the Grimmage has been checked for completeness and failed
if self.gStart == 'Not set':
return 'gStart'
elif self.gFinish == 'Not set':
return 'gFinish'
else:
return 'gTotalDistance'
奇怪的是,它永远不会 return 是 'gStart' 值,因为它不等于 'Not set.' 如果视图打印出它的字符串,这就是我得到的:
((django.db.models.fields.CharField), )
如果我再次手动设置并打印出该值,则可以(暂时)。但是,它很快恢复为 ...CharField 值。
有一段时间,我认为 none 的字段正在保存,但其他(非 CharField)字段都显示它们的默认设置,而我没有搞砸它们。此外,我似乎能够为它们保存值,以便它们持久存在。
在 shell 中转了一圈,我得到了这个结果:
我已经无计可施了。我以前创建过其他简单的 Django 项目,这应该是最简单的部分。当然,我认为我犯了一个荒谬的错误......但是什么?
您应该删除模型中 CharField
之后的逗号。使用逗号 Python 将 gStart
属性视为元组,而不是模型字段。
gStart = models.CharField(max_length=100, default='Not set') # without ,
我是一个django的新手,但我一直没能发现这是在别的地方。我根据 djangogirls 教程设置了 django 并创建了一个看起来像这样的模型:
class Grimmage(models.Model):
gStart = models.CharField(max_length=100, default='Not set'),
gStartLat = models.FloatField(default=0.0)
gStartLong = models.FloatField(default=0.0)
# [...]
gUpdateDate = models.DateField(default=timezone.now)
gUser = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
我已经完成了数据库迁移工作,我尝试使用 Grimmage.objects.create(gUser=request.user) 创建对象。 (我已经尝试过其他方法来创建具有相同结果的对象。)
这是我现在在各自视图中的内容(为什么我不再次手动设置默认值稍后会清楚):
grim = Grimmage.objects.create(gUser=user)
grim.gStart = 'Not set'
grim.gFinish = 'Not set'
grim.save()
最终,我正在创建的视图应检查值是否已从 'Not set' 更改为从用户获取值。所以,这个对象还有一个方法叫做'whatsNext()'到return接下来需要填写的值是:
def whatsNext(self):
''' Returns a sting to indicate what value is needed next '''
# Assumes the Grimmage has been checked for completeness and failed
if self.gStart == 'Not set':
return 'gStart'
elif self.gFinish == 'Not set':
return 'gFinish'
else:
return 'gTotalDistance'
奇怪的是,它永远不会 return 是 'gStart' 值,因为它不等于 'Not set.' 如果视图打印出它的字符串,这就是我得到的:
((django.db.models.fields.CharField), )
如果我再次手动设置并打印出该值,则可以(暂时)。但是,它很快恢复为 ...CharField 值。
有一段时间,我认为 none 的字段正在保存,但其他(非 CharField)字段都显示它们的默认设置,而我没有搞砸它们。此外,我似乎能够为它们保存值,以便它们持久存在。
在 shell 中转了一圈,我得到了这个结果:
我已经无计可施了。我以前创建过其他简单的 Django 项目,这应该是最简单的部分。当然,我认为我犯了一个荒谬的错误......但是什么?
您应该删除模型中 CharField
之后的逗号。使用逗号 Python 将 gStart
属性视为元组,而不是模型字段。
gStart = models.CharField(max_length=100, default='Not set') # without ,