簡體   English   中英

Django:關系“django_site”不存在

[英]Django: relation "django_site" does not exist

我在 aws 上運行一個測試 django 服務器,我剛剛安裝了 django-userena,當我嘗試在單擊提交時注冊用戶時,我收到以下消息:

關系“django_site”不存在第 1 行: ...“django_site”。“域”,“django_site”。“name” FROM “django_si ...

我不確定這里出了什么問題。 我做了一些研究並將" 'django.contrib.sites',"添加到我安裝的應用程序中,但我仍然收到錯誤消息。 我會缺少一個額外的步驟。 有什么建議或建議嗎?

即使在我的設置中設置了SITE_ID = 1 ,我最近也遇到了這個問題(Django 1.8.7)。 在進行任何其他遷移之前,我必須手動遷移sites應用程序:

./manage.py migrate sites
./manage.py migrate

您可能會在創建站點模型之前調用站點對象(在 syncdb 或遷移之前)

例如:站點 = Site.objects.get(id=settings.SITE_ID)

我有同樣的問題並像這樣修復它:

  1. SITE_ID=1添加到settings.py
  2. 運行這個命令:

     python manage.py migrate

我在使用django-cookiecutter -cookiecutter 、 django-allauthdjango-rest-auth時遇到了這個錯誤

我真的花了5個小時把頭發拉出來。 最終讓步,開始一點一點的注釋掉

對我有用的是注釋掉兩個預配置的 url 路徑(它們帶有 cookiecutter Django):

# User management
path("users/", include("yourapp.users.urls")),
path("accounts/", include("allauth.urls")),

之后遷移工作。

我取消了它的注釋,從那以后我的應用程序就一直在工作。 僅用於初始遷移

希望它可以幫助某人!

此問題可能是由您正在使用的應用程序之一引起的。 如果您仔細檢查回溯,您可能已經發現了拖欠。

我使用django-debug-toolbarzinnia遇到了這些問題。

如果您使用的是django-debug-toolbar這可能是一個解決方案:

嘗試按照顯式設置的步驟:http: //django-debug-toolbar.readthedocs.org/en/1.2.2/installation.html#explicit-setup

或者從您的INSTALLED APPS中刪除debug_toolbar

如果這沒有幫助或者如果另一個應用程序導致了問題,請嘗試暫時刪除所有導入(例如已安裝的應用程序、url、自定義視圖、設置),它們會顯示在回溯中。

對我來說,一個可怕的代碼導致了這個錯誤。 我有一個全局變量來獲取當前站點

SITE = Site.objects.get(pk=1)

這在遷移期間進行了評估並導致錯誤。

將這里留給未來的我:

python manage.py makemigrations allauth

這對我有用,我忘了為什么,花了我太長時間才弄清楚我是如何第一次解決這個問題的

編輯:makemigrations 有時不會制作像我的一些項目使用的 allauth 之類的第 3 方的東西,所以我必須指定那些

我在為我的項目(使用百日草)創建一個新的空數據庫時遇到了同樣的問題

在“管理遷移”之前運行“管理遷移站點”並沒有解決任何問題。 似乎在完成任何表創建之前加載了完整的項目。

我決定捕捉導入百日草相關應用程序產生的錯誤。

例如:在應用程序的 urls.py 中

urlpatterns = None
app_name = 'something'

try:
    from .views import MyEntryCreate


    urlpatterns = [

    url(r'^blogentry/create/$',
        login_required(MyEntryCreate.as_view()),
        name='zinnia_entry-add'),

    ]
except Exception as e:
    logger.error(app_name+" Error urls: "+str(e))
    urlpatterns = []

不得不在該應用程序的其他地方做類似的事情,並且“管理遷移”再次起作用。

如果在將 django 應用程序部署到 Heroku 時遇到此錯誤,請確保已運行:

heroku run python manage.py migrate

這對我有用

我遲到了,但我在 django v 1.11 上遇到了同樣的問題。

問題是我在正常 def() 和 form() 之外重建模型 [我使用模型進行選擇] 回溯應該列出 .py 文件

例如

 File "filepath/views.py", line 67, in <module>
    some_variable = some_model.objects.get(name ='name')

所以我不得不評論它來重建我的遷移

發布此內容以防有人遇到此問題並且上述答案均無效。

這是可能會或可能不會解決您的問題的解決方案之一的補充:

解決方案是:確保先執行遷移命令,然后再執行其他任何操作!

因此,在通常情況下,您將代碼上傳到雲,這可能是 AWS。 您正確地執行了通常的 docker-compose 命令,那么您應該首先執行以下操作:

執行以下步驟: docker-compose -f production.yml build然后docker-compose -f production.yml run --rm django python manage.py migrate

然后之后,您現在可以通過docker-compose -f production.yml updocker-compose -f production.yml up -d運行 docker 實例(在 google 上搜索這是什么意思)

--

如果您在遷移之前已經運行了該實例,那么只需停止您正在運行的 docker 實例並將其刪除。 我發現的一個方便的 docker 命令教程是: https ://www.thegeekdiary.com/how-to-list-start-stop-delete-docker-containers/

這基本上是數據庫錯誤我這次可以解決這個問題,數據庫是否存在? 為什么我不知道您是否知道,請查找並刪除它Site.objects.get_current()如果您知道,請對其進行評論,並且在您運行./manage.py migrate [step:2] 后我會說它已經存在。 所以我做了./manage.py migrate --fake [step:3]

[步驟1]

su postgres
psql -U <username> -d <database>
SELECT * FROM django_site;

CREATE TABLE django_site(
id serial PRIMARY KEY,domain VARCHAR (50) NULL,
name VARCHAR (50) NULL);

INSERT INTO django_site VALUES('1','mysite.com', 'mysite');

\q

從 admin enterface 更改 mysite.com 值后。

我剛剛重新啟動計算機,問題就消失了:)(重新啟動 docker-compose 是不夠的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM