在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 文件?
错误来自这一行:
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
在这里,您定义 default=1,因此当您不将任何用户实例分配给地理模型的用户字段时,默认用户字段采用整数默认值,但它需要一个用户实例。
有两种解决方案:
- 在创建地理模型的新实例/记录时,向其添加用户实例。
或
在地理模型中使用 blank=True,null=True,如下所示:
class geo(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True) location = models.PointField()
我个人会推荐第二种方法。谢谢。