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



在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,因此当您不将任何用户实例分配给地理模型的用户字段时,默认用户字段采用整数默认值,但它需要一个用户实例。

有两种解决方案:

  1. 在创建地理模型的新实例/记录时,向其添加用户实例。

  1. 地理模型中使用 blank=True,null=True,如下所示:

    class geo(models.Model):
        user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
        location = models.PointField()
    

我个人会推荐第二种方法。谢谢。

最新更新