【发布时间】:2015-09-18 13:52:00
【问题描述】:
我有以下 django 模型(使用 managed=False)。
class MyModel(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=250)
description = models.TextField()
client = models.ForeignKey(Client)
created_on = models.DateTimeField(null=True, blank=True)
user = models.ForeignKey(User, related_name='user')
last_modified_by = models.ForeignKey(User, related_name='last_modified_by', null=True)
last_modified_on = models.DateTimeField(null=True, blank=True)
class Meta:
managed = False
当我执行'python manage.py shell'并输入以下两条语句时,我可以看到mysql db中添加的行。
>>> dm = MyModel(name='name1', description='test1', client_id=6,user_id=9,last_modified_by_id=9)
>>> dm.save()
但是当我运行服务器“python manage.py runserver”并在类方法中执行相同的语句时,save() 会通过,但数据库中没有添加新行。
def funcname(self, request):
print("Creating new row...")
self.var = MyModel(name='testName',description='testDescription',client_id=6, user=9, last_modified_by=9)
self.var.save()
print("Created new row')
观察:
这两个打印语句确实会打印在控制台上。但是数据库中没有条目。
funcname() 中没有错误/异常。
尝试为差异列提供唯一条目。结果一样
-
在函数开头使用 pdb.set_trace() 运行服务器时,发现 MyModel.objects.filter() 给出了正确的行数。但是在数据库中查看时这个数字不匹配。
(Pdb) MyModel.objects.filter()
显示 2 个 MyModel 对象的列表。
但是登录DB查看时,对应的表只有1行。
使用 Python 2.7
对可能发生的事情有任何指示吗?
提前致谢!
【问题讨论】:
-
你能在保存完成后尝试打印
print(self.var.id)吗? -
是的。它会正确打印 id。
-
您确定您使用的是正确的数据库而不是 sqlite 数据库吗?
-
是的,它是正确且相同的 mysql 数据库。正如我所提到的,当我使用“python manage.py shell”时,我可以看到插入的新行。这里肯定有些奇怪。
标签: django python-2.7 django-models