id为1L的用户实例不存在

时间:2017-01-23 01:42:54

标签: python django django-models postgis geodjango

在Django项目中我使用两个数据库,第一个是MySQL第二个是PostgreSQL,在PostgreSQL中我只有几何值,但我也需要用户,所以在模型中我有:

from django.conf import settings
from django.contrib.gis.db import models

class geo(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
    location = models.PointField()

一切正常,但是当我尝试保存时,用户字段显示错误 ID为1L的用户实例不存在那么可能是什么答案?问题来自router.py文件吗?

1 个答案:

答案 0 :(得分:1)

错误来自这一行:

user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)

您要定义默认值= 1 ,因此当您未将任何用户实例分配到 geo 模型的用户字段时,默认为用户字段采用整数默认值,但它期望用户实例。

有两种解决方案:

  1. 在创建 geo 模型的新实例/记录时,请向其添加用户实例。
    1. geo 模型中使用 blank = True,null = True ,如下所示:

      class geo(models.Model):
          user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
          location = models.PointField()
      
    2. 我个人推荐第二种方法。感谢。