web-dev-qa-db-fra.com

(fields.E300) Field définit une relation avec un modèle non installé ou abstrait.

J'ai 2 applications installées dans mon projet Django "aplikacja"

Le premier nommé: "Godzina"

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')

et le second nommé: "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)

Je reçois une telle erreur:

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

Qu'est-ce que ça veut dire? Je voudrais que cet utilisateur puisse uniquement choisir l'heure à laquelle un administrateur a mis l'application "Godzina". Par exemple, je définis l'heure 19h00, 20h00, puis l'utilisateur peut choisir ces valeurs dans l'application UserProfile.

Est-il possible de résoudre ce problème?

14
Anna K

Vous devez ajouter le nom de l'application au nom du modèle associé dans la définition du FK:

czas = models.ForeignKey('firstapp.Godzina') 
26
catavaran
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
1
Paras Patidar

Plus de clarté pour les utilisateurs pouvant rencontrer un problème similaire . Cela peut être source de confusion si le nom de l'application et le nom du modèle sont identiques, par exemple. une classe appelée Student, qui hérite de modèles.Modèle

implémentation de titulaire:

model_variable = models.ForeignKey('the_appname.the_model_class_name)

exemple plus précis: avec un nom d'application en tant qu'étudiant et un nom de modèle également en tant qu'étudiant, et une autre présence d'application, avec un attribut "student_id"

student_id = models.ForeignKey('student.student)
0
Onengiye Richard