在创建和保存(插入数据库)模型实例时,我遇到了与 Django 文档不一致的非常奇怪的行为。由于可能的原因,我已经没有想法了,并且非常感谢任何关于 Django 在这些情况下未能保存所有字段的建议。
我正在使用的这个类:
class Person(models.Model):
user = models.ForeignKey(User)
phone_number = models.CharField(max_length=20, blank=True)
address = models.CharField(max_length=200, blank=True)
这是不起作用的代码,在少数情况下:
# First Case
new_person = Person()
new_person.user = request.user
new_person.phone_number = '111111'
new_person.save(force_insert=True)
# Second One
new_person = Person(user=request.user, phone_number='111111')
new_person.save(force_insert=True)
# Third One
new_person = Person.objects.create(user=request.user, phone_number='111111')
在任何情况下,基于官方 Django 文档,django 都应该创建一个对象并将其插入 DB。
实际上,该对象已成功创建(并且所有相关字段都已设置),但插入 DB 的行仅正确填写了字段,id
而同样设置的字段仍为空白。user_id
phone_number
但是,访问和更新现有(之前保存的)对象的所有字段没有问题。
blank=True
从类声明中删除Person
(通过适当的表更改)不会改变任何内容。
编辑: 问题变得更加复杂。下面我自己的答案中的完整描述和解决方案