Model Django "tidak mendeklarasikan label_aplikasi eksplisit"

119

Aku kehabisan akal. Setelah selusin jam memecahkan masalah, mungkin lebih, saya pikir saya akhirnya dalam bisnis, tetapi kemudian saya mendapat:

Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label 

Ada begitu sedikit info tentang ini di web, dan tidak ada solusi di luar sana yang menyelesaikan masalah saya. Nasihat apa pun akan sangat dihargai.

Saya menggunakan Python 3.4 dan Django 1.10.

Dari my settings.py:

INSTALLED_APPS = [
    'DeleteNote.apps.DeletenoteConfig',
    'LibrarySync.apps.LibrarysyncConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Dan file apps.py saya terlihat seperti ini:

from django.apps import AppConfig


class DeletenoteConfig(AppConfig):
    name = 'DeleteNote'

dan

from django.apps import AppConfig


class LibrarysyncConfig(AppConfig):
    name = 'LibrarySync'
Slbox
sumber
2
Anda tidak memiliki django.contrib.contenttypes di INSTALLED_APPS.
RemcoGerlich
2
Lalu kemungkinan besar lainnya adalah Anda mengimpornya sebelum modelnya dimuat, apakah beberapa aplikasi yang terdaftar sebelum contenttypes di INSTALLED_APPS menggunakannya?
RemcoGerlich
1
Itu tidak biasa, Anda sama sekali tidak memiliki proyek atau aplikasi Anda sendiri?
RemcoGerlich
1
Segala sesuatu yang memiliki models.py harus ada di INSTALLED_APPS; dan jika salah satu dari mereka menggunakan contenttype (misalnya, karena foreign key generik) maka perlu ada di bawah contenttypes dalam daftar.
RemcoGerlich
1
Membuat frustrasi, itu mungkin menjadi sesuatu yang sangat kecil tetapi sulit untuk membedakan dari sini. Apakah Anda mengimpor barang Anda di settings.py atau lebih?
RemcoGerlich

Jawaban:

91

Apakah Anda melewatkan memasukkan nama aplikasi Anda ke dalam file pengaturan? Ini myAppNameConfigadalah kelas default yang dibuat di apps.py oleh perintah .manage.py createapp myAppName . Di mana myAppName adalah nama aplikasi Anda.

settings.py

INSTALLED_APPS = [
'myAppName.apps.myAppNameConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

Dengan cara ini, file pengaturan mengetahui apa yang Anda ingin panggil aplikasi Anda. Anda dapat mengubah tampilannya nanti di file apps.py dengan menambahkan kode berikut di

myAppName / apps.py

class myAppNameConfig(AppConfig):
    name = 'myAppName'
    verbose_name = 'A Much Better Name'
Xeberdee
sumber
Oke jadi ini sangat masuk akal bagi saya dengan contoh, dan saya telah menerapkan perubahan sekarang berdasarkan pemahaman saya tentang sintaks, tetapi saya masih mencapai 100% kesalahan yang sama persis. Saya telah memperbarui posting saya untuk menjelaskan.
Slbox
2
Terima kasih kepada @xeberdee dan @RemcoGerlich atas bantuan mereka dalam hal ini. Pada akhirnya, solusi saya adalah memuat aplikasi saya di bawah aplikasi django.contrib, dan memindahkan entri import django django.setup()saya di dalam settings.py, ke bawah INSTALLED_APPSentri.
Slbox
2
Hanya ingin tahu - mengapa mengimpor django django.setup () di file pengaturan? Selain itu, aplikasi Anda harus dimuat bahkan jika itu yang pertama dalam daftar aplikasi yang diinstal.
Xeberdee
1
Apa perbedaan antara ini dan apa yang dia tulis dalam pertanyaannya?
Matt D
1
Intinya adalah bagaimana aplikasi ditemukan dalam pengaturan INSTALLED_APPS melalui bidang nama kelas di file konfigurasi. Posting telah diedit.
Xeberdee
36

Saya mendapatkan kesalahan yang sama dan saya tidak tahu bagaimana memecahkan masalah ini. Butuh waktu berjam-jam untuk menyadari bahwa saya memiliki init.py pada direktori yang sama dengan manage.py dari django.

Sebelum:

|-- myproject
  |-- __init__.py
  |-- manage.py
  |-- myproject
    |-- ...
  |-- app1
    |-- models.py
  |-- app2
    |-- models.py

Setelah:

|-- myproject
  |-- manage.py
  |-- myproject
    |-- ...
  |-- app1
    |-- models.py
  |-- app2
    |-- models.py

Agak bingung bahwa Anda mendapatkan kesalahan "tidak mendeklarasikan label_aplikasi eksplisit" ini. Tetapi menghapus file init ini menyelesaikan masalah saya.

samuel
sumber
2
Asap suci, aku sudah lama melihat ini - tangkapan yang bagus!
pengguna3167654
Saya mencoba membuat dokumentasi menggunakan pydoc, dan aplikasi saya tersembunyi tanpa init.py
Serg Smyk
20

Saya mengalami kesalahan yang persis sama saat menjalankan pengujian dengan PyCharm. Saya telah memperbaikinya dengan mengatur DJANGO_SETTINGS_MODULEvariabel lingkungan secara eksplisit . Jika Anda menggunakan PyCharm, cukup tekan tombol Edit Konfigurasi dan pilih Variabel Lingkungan .

Tetapkan variabel ke your_project_name.settingsdan itu harus memperbaiki hal itu.

Sepertinya kesalahan ini terjadi, karena PyCharm menjalankan pengujiannya sendiri manage.py.

stasdeep.dll
sumber
1
Punya masalah ini menjalankan Tes Pycharm meskipun menjalankan server melalui Pycharm tidak mengharuskan saya untuk menambahkan pengaturan. Menambahkan DJANGO_SETTINGS_MODULE secara manual ke konfigurasi untuk pengujian diselesaikan jika untuk saya.
PhoebeB
1
Selain itu, saat mengedit konfigurasi, ada gunanya mengedit template.
Yngve Høiseth
1
Pengaturan -> Bahasa & Kerangka -> Django -> Menambahkan nilai di bawah pengaturan akan secara otomatis ditetapkan DJANGO_SETTINGS_MODULEuntuk setiap konfigurasi pengujian Django dan Django yang baru.
Tobias Ernst
FYI, saya melakukan persis seperti yang ditunjukkan oleh solusi ini dan tidak berhasil pertama kali. Ternyata, PyCharm tidak menyimpan yang DJANGO_SETTINGS_MODULEpertama kalinya ketika saya mengklik Applykemudian OK. Saya melakukannya untuk kedua kalinya dan sekarang berhasil. Sepertinya PyCharm sedikit aneh.
MikeyE
Saya harus memastikan bahwa saya menyatakan impor dengan benar: dari <app>.<module> import <class>- Impor otomatis PyCharm hilang <app>. Setelah saya mengoreksi ini (juga memeriksa modul dependen) maka berfungsi dengan baik.
Matthew Hegarty
18

Saya mendapatkan yang ini ketika saya menggunakannya, ./manage.py shell lalu saya tidak sengaja mengimpor dari direktori tingkat proyek akar

# don't do this
from project.someapp.someModule import something_using_a_model
# do this
from someapp.someModule import something_using_a_model

something_using_a_model()
Lukeaus
sumber
Dalam kasus saya, saya harus mengubah dari from fields import xmenjadifrom .fields import x
daigorocub
13

sebagai noob yang menggunakan Python3 , saya menemukan itu mungkin kesalahan impor daripada kesalahan Django

salah:

from someModule import someClass

Baik:

from .someModule import someClass

ini terjadi beberapa hari yang lalu tetapi saya benar-benar tidak dapat mereproduksinya ... Saya pikir hanya orang yang baru mengenal Django yang dapat menjumpai ini. inilah yang saya ingat:

coba daftarkan model di admin.py:

from django.contrib import admin
from user import User
admin.site.register(User)

coba jalankan server, error terlihat seperti ini

some lines...
File "/path/to/admin.py" ,line 6
tell you there is an import error
some lines...
Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label

berubah usermenjadi .user, masalah terpecahkan

rpstw
sumber
9
Selamat datang di stackoverflow! Saya merasa terdorong untuk menyebutkan bahwa jawaban Anda tidak terkait dengan pertanyaan OP. Sebagai pemula, Anda harus berhati-hati dalam mengusulkan solusi tanpa terlebih dahulu memverifikasi kebenarannya. Namun harap terus kembali, dan posting jawaban konkret bila Anda bisa — terima kasih!
evadeflow
1
Saya berharap lebih banyak komentar di Stack seperti milik Anda Xeon Phil. Terlalu sering pengguna baru dikejar oleh pemberi komentar fanatik yang tidak senang karena mereka bukan ahli Stack pada hari pertama.
Slbox
1
Anda benar, @evadeflow, jawaban pertama saya terlihat sangat tidak berhubungan, saya mencoba untuk mengklarifikasi jawabannya, semoga jawabannya bermanfaat.
rpstw
Itu adalah masalah serupa dalam kasus saya. 'dari ..core.models impor CommonInfo' harus menjadi 'dari apps.core.models import CommonInfo'
user42488
Ini adalah masalah saya, dikaburkan karena terjadi dalam 2 file terpisah. Sialan, impor bersarang! Sialan, penolakan bodoh saya terhadap perubahan yang masuk akal dari 2to3!
9999 tahun
13

Saya memiliki masalah yang sama sekarang. Saya telah memperbaiki milik saya dengan menambahkan namespace pada nama aplikasi. Semoga seseorang menemukan ini bermanfaat.

apps.py

from django.apps import AppConfig    

class SalesClientConfig(AppConfig):
        name = 'portal.sales_client'
        verbose_name = 'Sales Client'
Wreeecks
sumber
8

Saya mendapat kesalahan ini saat mengimpor model dalam percobaan, yaitu diberikan struktur proyek Django ini:

|-- myproject
    |-- manage.py
    |-- myproject
    |-- myapp
        |-- models.py  # defines model: MyModel
        |-- tests
            |-- test_models.py

dalam file yang test_models.pysaya impor MyModeldengan cara ini:

from models import MyModel

Masalah diperbaiki jika diimpor dengan cara ini:

from myapp.models import MyModel

Semoga ini membantu!

PS: Mungkin ini agak terlambat, tetapi saya tidak menemukan jawaban orang lain bagaimana menyelesaikan masalah ini di kode saya dan saya ingin membagikan solusi saya.

juliocesar.dll
sumber
juliocesar Anda seorang juara. Terima kasih. Ini adalah kesalahan yang konyol.
Kirk
2
Butuh waktu lebih lama dari yang diharapkan untuk menemukan ini. Saya menggunakan impor relatif di file test.py saya. Mendapat kesalahan saat menggunakan from .models import MyModel. Mengubah untuk from myapp.models import MyModelmemperbaiki masalah.
monkut
@monkut sama disini. Saya bertanya-tanya mengapa ini terjadi. Ngomong-ngomong, saya menggunakan folder aplikasi khusus. "/ apps" di root project, ditambahkan ke jalur.
4

Setelah terus mengalami masalah ini dan terus kembali ke pertanyaan ini, saya pikir saya akan membagikan apa masalah saya.

Semua yang @Xeberdee benar, jadi ikuti itu dan lihat apakah itu menyelesaikan masalah, jika tidak, ini adalah masalah saya:

Dalam my apps.py inilah yang saya punya:

class AlgoExplainedConfig(AppConfig):
    name = 'algo_explained'
    verbose_name = "Explain_Algo"
    ....

Dan yang saya lakukan hanyalah menambahkan nama proyek di depan nama aplikasi saya seperti ini:

class AlgoExplainedConfig(AppConfig):
name = '**algorithms_explained**.algo_explained'
verbose_name = "Explain_Algo"

dan itu memecahkan masalah saya dan saya dapat menjalankan makemigrations dan migrate command setelah itu! semoga berhasil

ZaMy
sumber
3

Saya mendapat kesalahan hari ini mencoba menjalankan pengujian Django karena saya menggunakan from .models import *sintaks singkat di salah satu berkas saya. Masalahnya adalah saya memiliki struktur file seperti ini:

    apps/
      myapp/
        models/
          __init__.py
          foo.py
          bar.py

dan models/__init__.pysaya mengimpor model saya menggunakan sintaks singkat:

    from .foo import *
    from .bar import *

Dalam aplikasi saya, saya mengimpor model seperti:

    from myapp.models import Foo, Bar

Hal ini disebabkan Django model doesn't declare an explicit app_labelsaat dijalankan ./manage.py test.

Untuk memperbaiki masalah ini, saya harus mengimpor secara eksplisit dari jalur lengkap di models/__init__.py:

    from myapp.models.foo import *
    from myapp.models.bar import *

Itu mengatasi kesalahannya.

H / t https://medium.com/@michal.bock/fix-weird-exceptions-when-running-django-tests-f58def71b59a

inostia
sumber
Ini juga masalah saya. Terima kasih!
Sam Creamer
3

Dalam kasus saya, ini terjadi karena saya menggunakan jalur modul relatif di urls.py tingkat proyek , INSTALLED_APPSdan apps.pybukannya di-rooting di root proyek. yaitu jalur modul absolut, bukan jalur modul relatif + peretasan.

Tidak peduli seberapa banyak saya mengacaukan jalur di dalam INSTALLED_APPSdan apps.pydi aplikasi saya, saya tidak bisa mendapatkan keduanya runserverdan pytestbekerja sampai ketiganya berakar di root proyek.

Struktur folder:

|-- manage.py
|-- config
    |-- settings.py
    |-- urls.py
|-- biz_portal
    |-- apps
        |-- portal
            |-- models.py
            |-- urls.py
            |-- views.py
            |-- apps.py

Dengan yang berikut ini, saya bisa menjalankan manage.py runserverdan gunicorn dengan wsgi dan menggunakan portaltampilan aplikasi tanpa masalah, tetapi pytest akan error ModuleNotFoundError: No module named 'apps'meskipun DJANGO_SETTINGS_MODULEdikonfigurasi dengan benar.

config / settings.py:

INSTALLED_APPS = [
    ...
    "apps.portal.apps.PortalConfig",
]

biz_portal / apps / portal / apps.py:

class PortalConfig(AppConfig):
    name = 'apps.portal'

config / urls.py:

urlpatterns = [
    path('', include('apps.portal.urls')),
    ...
]

Mengubah referensi aplikasi di config / settings.py ke biz_portal.apps.portal.apps.PortalConfigdan PortalConfig.nameuntuk biz_portal.apps.portalmengizinkan pytest berjalan (saya belum memiliki tes untuk portaltampilan) tetapi runserverakan membuat kesalahan dengan

RuntimeError: Kelas model apps.portal.models.Business tidak mendeklarasikan app_label eksplisit dan tidak ada dalam aplikasi di INSTALLED_APPS

Akhirnya saya apps.portalberusaha untuk melihat apa yang masih menggunakan jalur relatif, dan menemukan bahwa config / urls.py juga harus digunakan biz_portal.apps.portal.urls.

jbothma.dll
sumber
Peretasan dengan jalur relatif ......... Melakukan hal yang sama. Wawasan Anda sangat membantu saya
zar3bski
2

Saya mengalami kesalahan ini ketika saya mencoba membuat migrasi untuk satu aplikasi yang memiliki migrasi salah format karena git merge. misalnya

manage.py makemigrations myapp

Ketika saya menghapus migrasinya dan kemudian menjalankan:

manage.py makemigrations

kesalahan tidak terjadi dan migrasi berhasil dibuat.

Cerin
sumber
Terima kasih. Migrasi terus membuat frustrasi.
HashRocketSyntax
2

Saya memiliki masalah serupa, tetapi saya dapat menyelesaikan masalah saya dengan menentukan secara eksplisit app_label menggunakan Meta Class di kelas model saya

class Meta:
    app_label  = 'name_of_my_app'
Benjamin Andoh
sumber
Terima kasih Benjamin! Dalam proyek Django saya, saya menggunakan Sphinx untuk menghasilkan dokumentasi, dan :: autoclass direktif memberikan kesalahan "app_label" sampai saya menambahkannya ke kelas Model Meta seperti yang Anda sarankan.
Stefan Musarra
Saya senang ini berhasil untuk Anda
Benjamin Andoh
1

Saya mendapat kesalahan ini saat mencoba memutakhirkan aplikasi Django Rest Framework saya ke DRF 3.6.3 dan Django 1.11.1.

Untuk orang lain dalam situasi ini, saya menemukan solusi saya dalam masalah GitHub , yaitu membatalkan UNAUTHENTICATED_USERpengaturan di pengaturan DRF :

# webapp/settings.py
...
REST_FRAMEWORK = {
    ...
    'UNAUTHENTICATED_USER': None
    ...
}
Robin Winslow
sumber
1

Saya baru saja mengalami masalah ini dan mencari tahu apa yang salah. Karena tidak ada jawaban sebelumnya yang mendeskripsikan masalah seperti yang terjadi pada saya, saya pikir saya akan mempostingnya untuk orang lain:

  • Masalahnya berasal dari penggunaan python migrate.py startapp myAppdari folder root proyek saya, lalu pindahkan myApp ke folder anak dengan mv myApp myFolderWithApps/.
  • Saya menulis myApp.models dan berlari python migrate.py makemigrations. Semua berjalan dengan baik.
  • kemudian saya melakukan hal yang sama dengan aplikasi lain yang mengimpor model dari myApp. Kaboom! Saya mengalami kesalahan ini, saat melakukan migrasi. Itu karena saya harus menggunakan myFolderWithApps.myAppuntuk mereferensikan aplikasi saya, tetapi saya lupa memperbarui MyApp / apps.py. Jadi saya mengoreksi myApp / apps.py, settings / INSTALLED_APPS dan jalur impor saya di aplikasi kedua saya.
  • tetapi kemudian kesalahan terus terjadi: alasannya adalah saya mengalami migrasi mencoba mengimpor model dari myApp dengan jalur yang salah. Saya mencoba untuk memperbaiki file migrasi, tetapi saya pergi ke titik di mana lebih mudah untuk mengatur ulang DB dan menghapus migrasi untuk memulai dari awal.

Singkatnya: - Masalah awalnya berasal dari nama aplikasi yang salah di apps.py dari myApp, di pengaturan dan di jalur impor aplikasi kedua saya. - tetapi itu tidak cukup untuk memperbaiki jalur di tiga tempat ini, karena migrasi telah dibuat dengan impor yang merujuk nama aplikasi yang salah. Oleh karena itu, kesalahan yang sama terus terjadi saat bermigrasi (kecuali kali ini dari migrasi).

Jadi ... periksa migrasi Anda, dan semoga berhasil!

harrouet
sumber
1

Saya mendapat kesalahan serupa saat membangun API di Django rest_framework.

RuntimeError: Kelas model apps.core.models.University tidak mendeklarasikan eksplisit> app_label dan tidak ada dalam aplikasi di INSTALLED_APPS.

Jawaban luke_aus membantu saya dengan mengoreksi urls.py saya

dari

from project.apps.views import SurgeryView

untuk

from apps.views import SurgeryView
Jade Dhangwattanotai
sumber
Bagi saya, saya menyembunyikannya dalam migrasi. Tidak yakin bagaimana itu terjadi, tetapi menghapus nama / jalur proyek memperbaiki semuanya.
Michael Thompson
1

Dalam kasus saya, saya mendapat kesalahan ini ketika kode porting dari Django 1.11.11 ke Django 2.2. Saya sedang mendefinisikan kelas turunan FileSystemStorage kustom. Dalam Django 1.11.11 saya mendapatkan baris berikut di models.py:

from django.core.files.storage import Storage, DefaultStorage

dan kemudian di file saya memiliki definisi kelas:

class MyFileStorage(FileSystemStorage):

Bagaimanapun, di Django 2.2 saya perlu secara eksplisit mereferensikan FileSystemStoragekelas ketika mengimpor:

from django.core.files.storage import Storage, DefaultStorage, FileSystemStorage

dan voila !, kesalahan itu hilang.

Perhatikan, bahwa setiap orang melaporkan bagian terakhir dari pesan kesalahan yang dilontarkan oleh server Django. Namun, jika Anda menggulir ke atas, Anda akan menemukan alasannya di tengah kesalahan mambo-jambo itu.

pengguna2641103
sumber
1

dalam kasus saya, saya dapat menemukan perbaikan dan dengan melihat kode orang lain itu mungkin masalah yang sama .. Saya hanya perlu menambahkan 'django.contrib.sites' ke daftar aplikasi terinstal di settings.py mengajukan.

semoga ini membantu seseorang. ini adalah kontribusi pertama saya untuk komunitas pengkodean

Jermaine Haughton
sumber
1

TL; DR: Menambahkan __init__.py kosong memperbaiki masalah saya.

Saya mendapat kesalahan ini di PyCharm dan menyadari bahwa file pengaturan saya tidak diimpor sama sekali. Tidak ada kesalahan yang jelas memberi tahu saya ini, tetapi ketika saya memasukkan beberapa kode yang tidak masuk akal ke dalam settings.py, itu tidak menyebabkan kesalahan.

Saya memiliki settings.py di dalam folder local_settings . Namun, saya tidak akan memasukkan __init__.py di folder yang sama untuk memungkinkannya diimpor. Setelah saya menambahkan ini, kesalahannya hilang.

James Bradbury
sumber
1

Jika Anda telah mendapatkan semua konfigurasi dengan benar, itu mungkin hanya kekacauan impor. perhatikan bagaimana Anda mengimpor model yang melanggar.

Berikut ini tidak akan berhasil from .models import Business. Gunakan jalur impor lengkap sebagai gantinya:from myapp.models import Business

evanxg852000.dll
sumber
1

Jika semuanya gagal, dan jika Anda melihat kesalahan ini ketika mencoba mengimpor dalam "konsol Python" PyCharm (atau "konsol Django"):

Coba mulai ulang konsol.

Ini cukup memalukan, tetapi butuh beberapa saat sebelum saya menyadari bahwa saya lupa melakukan itu.

Inilah yang terjadi:

Menambahkan aplikasi baru, lalu menambahkan model minimal, lalu mencoba mengimpor model di konsol Python / Django (PyCharm pro 2019.2). Ini meningkatkan doesn't declare an explicit app_labelkesalahan, karena saya belum menambahkan aplikasi baru ke INSTALLED_APPS. Jadi, saya menambahkan aplikasi ke INSTALLED_APPS, mencoba mengimpor lagi, tetapi masih mendapatkan kesalahan yang sama.

Datang ke sini, baca semua jawaban lainnya, tetapi sepertinya tidak ada yang cocok.

Akhirnya saya sadar bahwa saya belum memulai ulang konsol Python setelah menambahkan aplikasi baru ke INSTALLED_APPS.

Catatan: gagal memulai ulang konsol Python PyCharm, setelah menambahkan objek baru ke modul, juga merupakan cara yang bagus untuk mendapatkan ImportError: Cannot import name ...

djvg
sumber
Terima kasih atas jawaban ini, saya lupa untuk mengambil .envfile saya dan saya melakukan yang terbaik untuk membuat semuanya bekerja dengan konfigurasi yang sudah usang: /
sodimel
1

O ... M ... G Saya juga mendapatkan kesalahan ini dan saya menghabiskan hampir 2 hari untuk itu dan sekarang saya akhirnya berhasil menyelesaikannya. Sejujurnya ... kesalahan itu tidak ada hubungannya dengan apa masalahnya. Dalam kasus saya itu adalah masalah sintaksis sederhana. Saya mencoba menjalankan modul python mandiri yang menggunakan beberapa model django dalam konteks django, tetapi modul itu sendiri bukanlah model django. Tapi saya menyatakan kelas itu salah

alih-alih memiliki

class Scrapper:
    name = ""
    main_link= ""
    ...

saya sedang melakukan

class Scrapper(Website):
    name = ""
    main_link= ""
    ...

yang jelas salah. Pesan ini sangat menyesatkan sehingga saya tidak bisa menahan diri tetapi berpikir itu adalah masalah dengan konfigurasi atau hanya menggunakan django dengan cara yang salah karena saya sangat baru untuk itu.

Saya akan membagikan ini di sini untuk seorang pemula karena saya melalui kekonyolan yang sama semoga dapat menyelesaikan masalah mereka.

Rafael Santos
sumber
0

Saya menerima kesalahan ini setelah saya memindahkan SECRET_KEYto pull dari variabel lingkungan dan lupa mengaturnya saat menjalankan aplikasi. Jika Anda memiliki sesuatu seperti ini di filesettings.py

SECRET_KEY = os.getenv('SECRET_KEY')

lalu pastikan Anda benar-benar menyetel variabel lingkungan.

ameier38
sumber
0

Kemungkinan besar Anda memiliki impor dependen .

Dalam kasus saya, saya menggunakan kelas serializer sebagai parameter dalam model saya, dan kelas serializer menggunakan model ini: serializer_class = AccountSerializer

from ..api.serializers import AccountSerializer

class Account(AbstractBaseUser):
    serializer_class = AccountSerializer
    ...

Dan di file "serializers":

from ..models import Account

class AccountSerializer(serializers.ModelSerializer):
    class Meta:
        model = Account
        fields = (
            'id', 'email', 'date_created', 'date_modified',
            'firstname', 'lastname', 'password', 'confirm_password')
    ...
Dashko Leonid
sumber
0

Saya mendapat kesalahan ini hari ini dan berakhir di sini setelah googling. Tak satu pun dari jawaban yang ada tampaknya relevan dengan situasi saya. Satu-satunya hal yang perlu saya lakukan adalah mengimpor model dari __init__.pyfile saya di tingkat atas sebuah aplikasi. Saya harus memindahkan impor saya ke dalam fungsi menggunakan model.

Django tampaknya mempunyai beberapa kode aneh yang dapat gagal seperti ini dalam banyak skenario berbeda!

kemas
sumber
0

Saya mendapat kesalahan ini juga hari ini. Pesan tersebut merujuk ke beberapa aplikasi tertentu dari aplikasi saya di INSTALLED_APPS . Tetapi sebenarnya itu tidak ada hubungannya dengan Aplikasi khusus ini. Saya menggunakan Lingkungan virtual baru dan lupa menginstal beberapa Perpustakaan, yang saya gunakan dalam proyek ini. Setelah saya menginstal Perpustakaan tambahan, itu berhasil.

lubang hitam matahari
sumber
0

Untuk pengguna PyCharm: Saya mengalami kesalahan saat menggunakan struktur proyek yang tidak "bersih".

Dulu:

project_root_directory
└── src
    ├── chat
       ├── migrations
       └── templates
    ├── django_channels
    └── templates

Sekarang:

project_root_directory
├── chat
   ├── migrations
   └── templates
       └── chat
├── django_channels
└── templates

Berikut ini banyak solusi yang bagus, tetapi saya pikir, pertama-tama, Anda harus membersihkan struktur proyek Anda atau menyetel pengaturan PyCharm Django sebelum mengatur DJANGO_SETTINGS_MODULEvariabel dan seterusnya.

Semoga ini akan membantu seseorang. Bersulang.

Pavel Druzhinin
sumber
-1

Masalahnya adalah:

  1. Anda telah membuat modifikasi pada file model Anda, tetapi belum menambahkannya ke DB, tetapi Anda mencoba menjalankan Python manage.py runserver.

  2. Jalankan Python manage.py makemigrations

  3. Python manage.py migrate

  4. Sekarang Python manage.py runserver dan semuanya akan baik-baik saja.

Ken Edem
sumber