web-dev-qa-db-ja.com

(fields.E300)フィールドは、インストールされていないか、抽象的であるモデルとの関係を定義します

Django Project "aplikacja"に2つのアプリをインストールしました

最初の名前は「ゴジナ」

from Django.db import models

class Godzina (models.Model):
        GODZINA = (
        ('19', '19'),
        ('20', '20'),
        ('21', '21'),
        )
        godzina = models.CharField(max_length=6, choices=GODZINA, verbose_name='jezyk')

2番目の名前は「UserProfile」です。

from Django.db import models
from Django.contrib.auth.models import User
from godzina.models import Godzina

class UserProfile(models.Model):
    czas = models.ForeignKey('Godzina')   
    user = models.OneToOneField(User)

私はそのようなエラーを得ています:

userprofile.UserProfile.czas: (fields.E300) Field defines a relation with model 'Godzina', which is either not installed, or is abstract.

どういう意味ですか?ユーザーが管理者がアプリ「Godzina」に入力するような時間のみを選択できるようにしたいです。たとえば、午後19時、午後20時を定義している場合、ユーザーはこれらの値をUserProfileアプリで選択できます

この問題を修正することは可能ですか?

20
Anna K

FK定義の関連モデル名にアプリ名を追加する必要があります。

czas = models.ForeignKey('firstapp.Godzina') 
29
catavaran

同様の問題が発生する可能性のあるユーザーのためのより明確な。アプリ名とモデル名が同じ場合、たとえばアプリ名が「学生」であり、student/modelsに、モデルを継承するStudentというクラスがある場合、混乱する可能性があります。モデル

プレースホルダーの実装:

model_variable = models.ForeignKey('the_appname.the_model_class_name)

より正確な例:アプリ名をStudent、モデル名をStudentとし、別のアプリの出席を属性 "student_id"で

student_id = models.ForeignKey('student.student)
0
from Django.db import models
from Django.contrib.auth.models import User

from godzina.models import Godzina

class UserProfile(models.Model):

    czas = models.ForeignKey('Godzina')   

    user = models.OneToOneField(User)

    class Meta:     #you have to add abstract class
        abstract = True
0
Paras Patidar