2017-01-23 39 views
-1

在Django項目我使用兩個數據庫,第一個是MySQL的第二個是PostgreSQL的,在PostgreSQL裏我只有幾何值,但我需要的用戶太多,所以在模型中,我有:用戶實例1L不存在

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文件?

+0

這顯然意味着模型期待一個類實例,並且您將它發送給對象ID。 – karthikr

+0

你是否想要通過2個不同的數據庫有關係?這是不可能的。但是,一個不好的方法是將用戶標識存儲爲字符串/整型而不是foriegnkey。 – Rohan

+0

外鍵應始終是主鍵的引用,它們不應該是默認值。只要嘗試刪除它,並且只要您想在地理模型中創建或更新,只需提供主鍵對象而不是用戶的直接值。 –

回答

1

誤差來源於此行:

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

在這裏你要定義默認= 1所以當你不給用戶字段的地理模型給予任何用戶實例,默認然後用戶字段採用整數默認值,但期望用戶實例。

解決辦法有兩個:

  1. 在創建地理模型新實例/記錄的時間,用戶實例添加到它。

或者

  • 使用空白=真,空在地理=真模型,就像這樣:

    class geo(models.Model): 
        user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True) 
        location = models.PointField() 
    
  • 我個人會推薦第二種方法。謝謝。