2016-09-09 4 views
0

Da ich gleiches abstraktes Modell in jedem App-Modell hatte ich Redundanz zu vermeiden, habe ich mein gemeinsames abstraktes Modell nur in neue App zog ich erstellt und nannte es gemeinsamWarum bekomme ich django.core.exceptions.AppRegistryNotReady: Modelle sind noch nicht geladen?

Gemeinsamer Models.py ist jetzt

from django.db import models 

LANGUAGE_CHOICES = (
    ('E','ENGLISH'), 
    ('F','FRENCH'), 
    ('S','SPANISH'), 
) 




class CommonInfo(models.Model): 
    created = models.DateTimeField("creation date", auto_now_add=True) 
    modified = models.DateTimeField("modification date", auto_now=True) 
    description = models.TextField() 

    class Meta: 
     abstract = True 

dann habe ich meine gemeinsame App

Und schließlich meine apps, settings.py in alles, was ich hinzugefügt

from common.models import CommonInfo 
from common.models import LANGUAGE_CHOICES 

Nach dem lokalen Server läuft dies ist der Fehler im Terminal (volle Linie) Ich bin immer

Traceback (jüngste Aufforderung zuletzt): File "manage.py", Zeile 10, in execute_from_command_line (sys .argv) Datei "C: \ Benutzer \ Boris \ dev \ miete \ virrentout \ lib \ site-packages \ django \ core \ m anagement__init__.py", Zeile 338, in execute_from_command_line utility.execute() Datei "C: \ Benutzer \ Boris \ dev \ rentout \ ventrentout \ lib \ site-packages \ django \ core \ m anagement__init__.py ", Zeile 312, in Ausführung django.setup() Datei" C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ site-packages \ django__init .py ", Zeile 18, im Setup apps.populate (settings.INSTALLED_APPS) Datei" C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ site-packages \ django \ apps \ r egistry.py Zeileapp_config.import_models (all_models) Datei "C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ site-packages \ django \ apps \ c onfig.py", Zeile 198, in import_models self.models_module = import_module (models_module_name) Datei "C: \ python27 \ Lib \ importlib__init Py", Zeile 37, in import_module import (name) Datei „C: \ Benutzer \ Boris \ dev \ rentout \ rentout \ lease \ models.py ", Zeile 94, in Klasse LeaseFilter (django_filters.FilterSet): Datei" C: \ Users \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django_filter s \ filterset.py ", Zeile 181, in neu filters = new_class.filters_for_model (opts.model, opts) Datei" C: \ Users \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django_filter s \ filterset.py ", Zeile 456, in filters_for_model cls.filter_for_reverse_field Datei" C: \ Benutzer \ Boris \ dev \ rentout \ virtuentout \ lib \ site-packages \ django_filter s \ filterset.py ", Zeile 104, in filters_for_model filter_ = filter_for_field (Feld, f) Datei" C: \ Benutzer \ Boris \ dev \ rentout \ virtuentout \ lib \ site-packages \ django_filter s \ filterset.py " , Zeile 461, in filter_for_field f, lookup_type = resolve_field (f, lookup_expr) Datei "C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ site-pack Age \ django_filter s \ utils.py ", Zeile 104, in resolve_field Abfrage = model_field.model._default_manager.all(). Abfrage-Datei" C: \ Benutzer \ Boris \ dev \ rentout \ virtuentout \ lib \ Site-Pakete \ django \ db \ mod els \ manager.py ", Zeile 228, insgesamt return self.get_queryset() Datei" C: \ Benutzer \ Boris \ dev \ rentout \ rentout \ lease \ models.py ", Zeile 15 ., in get_q return Super (NotTerminatedActiveManager, Selbst-) .get_queryset() ueryset Filter (is_term inated = false, is_active = True)
Datei „C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ site -Pakete \ django \ db \ mod els \ Abfrage.py ", Zeile 679, im Filter return self._filter_or_exclude (Falsch, * args, ** kwargs) Datei" C: \ Benutzer \ Boris \ dev \ rentout \ ventrentout \ lib \ site-packages \ django \ db \ mod els \ query.py ", Zeile 697, in _filter_or_exclude clone.query.add_q (Q (* args, ** kwargs)) Datei" C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ db \ mod els \ sql \ query.py ", Zeile 1301, in add_q Klausel, require_inner = self._add_q (where_part, self.used_aliases) Datei " C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ site-packages \ django \ db \ mod els \ sql \ query.py ", Zeile 1328, in _add_q current_negated = aktuelle_negative, connector = connector, allow_joins = allow_join s) Datei " C: \ Users \ Boris \ dev \ rentout \ ventrentout \ lib \ Site-Pakete \ django \ db \ mod els \ sql \ query.py ", Zeile 1144, in build_filter Suchvorgänge, Teile, reffed_aggregate = self.solve_lookup_type (arg) Datei " C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ db \ mod els \ sql \ query.py ", Zeile 1030, in solve_lookup_type _, feld, _, lookup_parts = self.names_to_path (lookup_splitted, self.get_met a()) Datei " C: \ Benutzer \ Boris \ dev \ rentout \ ventrentout \ lib \ site-packages \ django \ db \ mod els \ sql \ query.py ", Zeile 1383, in names_to_path field_names = Liste (get_field_names_from_opts (opts)) Datei" C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ db \ mod els \ sql \ query.py ", Zeile 43, in get_field_names_from_opts für f in opts.get_fields() Datei" C: \ Benutzer \ Boris \ Dev \ Miete out \ vitrentout \ lib \ site-packages \ django \ db \ mod els \ options.py ", Zeile 740, in get_fields return self._get_fields (include_parents = include_parents, include_hidden = include_hidden) Datei " C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ db \ mod els \ options.py ", Zeile 802, in _get_fields all_fields = self._relation_tree Datei" C: \ Users \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ utils \ functional.py ", Zeile 60, in get res = Instanz. dict [self.name] = self.func (Instanz) Datei "C: \ Benutzer \ Boris \ dev \ rentout \ virtrentout \ lib \ Site-Pakete \ django \ db \ mod els \ options.py", Zeile 709, in _relation_tree return self._populate_directed_relation_graph() Datei "C: \ Benutzer \ Boris \ dev \ rentout \ ventrentout \ lib \ site-packages \ django \ db \ mod els \ options.py", Zeile 681, in _populate_directed_relation_graph all_models = self.apps.get_models (include_auto_created = True) Datei "C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ utils \ lru_cache.py", Zeile 101, in Wrapper result = user_function (* args, ** kwds) Datei "C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ apps \ r egistry.py", Zeile 168, in get_models self.check_models_ready() Datei "C: \ Benutzer \ Boris \ dev \ rentout \ vitrentout \ lib \ site-packages \ django \ apps \ r egistry.py", Zeile 131, in check_models_ready appRegistryNotReady erhöhen ("Models aren 't geladen noch. ") django.core.exceptions.AppRegistryNotReady: Modelle sind noch nicht geladen.

Was könnte das Problem sein? Gibt es eine bessere Möglichkeit, alle gängigen abstrakten Modelle und Auswahlmöglichkeiten zu gruppieren, um Randomität zu vermeiden?

UPDATE:

Dies ist der Ort des Fehlers I

from django.db import models 
from concurrency.fields import IntegerVersionField 
from client.models import Tenant 
from unit.models import Unit, Extra 
from common.models import CommonInfo 
from common.models import NOTE_STATUS_CHOICES 
import django_filters 

# Create your models here. 



class NotTerminatedActiveManager(models.Manager): 
    def get_queryset(self): 
     return super(NotTerminatedActiveManager, self).get_queryset().filter(is_terminated=False,is_active=True) 


class Lease(CommonInfo): 
    version = IntegerVersionField() 
    amount = models.DecimalField(max_digits=7, decimal_places=2) 
    is_notrenewed = models.BooleanField(default=False) 
    unit = models.ForeignKey(Unit) 
    is_terminated = models.BooleanField(default=False) 
    not_terminated_active_objects = NotTerminatedActiveManager() 
    def __unicode__(self): 
     return u'%s %i %s %s ' % ("#", self.id,"unit", self.unit) 

class LeaseConditions(CommonInfo): 
    version = IntegerVersionField() 
    start_date = models.DateTimeField() 
    end_date = models.DateTimeField() 
    lease = models.ForeignKey(Lease) 
    increase = models.DecimalField(max_digits=7, decimal_places=2) 
    amount = models.DecimalField(max_digits=7, decimal_places=2) 
    is_terminated = models.BooleanField(default=False) 
    not_terminated_active_objects = NotTerminatedActiveManager() 
    def __unicode__(self): 
     return u'%s %i %s %s %s %s %s %s' % ("#", self.id,"first_name", self.first_name, "last_name", self.last_name, "phone", self.phone) 

    def clean(self): 
     model = self.__class__ 
     if self.lease_id and (self.is_terminated == False) and model.objects.filter(lease=self.lease, is_active=True).count() == 1: 
      raise ValidationError('!Lease has a active condition already, Terminate prior to creation of new one'.format(self.lease)) 

class LeaseTenant(CommonInfo): 
    version = IntegerVersionField() 
    tenant = models.ForeignKey(Tenant) 
    lease = models.ForeignKey(Lease) 
    is_financialy_accountable = models.BooleanField(default=True) 


class LeaseExtra(CommonInfo): 
    version = IntegerVersionField() 
    extra = models.ForeignKey(Extra) 
    lease = models.ForeignKey(Lease) 
    is_included = models.BooleanField(default=True) 





class LeaseDiscount(CommonInfo): 
    version = IntegerVersionField() 
    amount = models.DecimalField(max_digits=7, decimal_places=2) 
    leaseconditions = models.ForeignKey(LeaseConditions) 
    period_date = models.DateTimeField() 


class LeasePayment(CommonInfo): 
    version = IntegerVersionField() 
    amount = models.DecimalField(max_digits=7, decimal_places=2) 
    lease = models.ForeignKey(Lease) 
    period_payed_for = models.DateTimeField() 
    payment_date = models.DateTimeField() 



class Note(CommonInfo): 
    version = IntegerVersionField() 
    title = models.CharField(max_length=200) 
    contact = models.ForeignKey(Lease) 
    followup_date = models.DateTimeField(null=True, blank=True) 
    status = models.CharField(max_length=1, default='P', 
           choices=NOTE_STATUS_CHOICES) 
    #widgets = { 
      #Use localization and bootstrap 3 
      #'datetime': DateTimeWidget(attrs={'id':"id_followup_date"}, usel10n = True, bootstrap_version=3)} 
    def __unicode__(self): 
     return u'%s %s %s %s %s %i %s %s %s %s %s %s %s %s' % ("Status:", self.status, "Follow Date:", self.followup_date, "Note #:", self.id, "Published:", self.creation_time, "Author:",self.author,"/Title:" , self.title,"/Body:" , self.body ) 




class LeaseFilter(django_filters.FilterSet): 
    class Meta: 
     model = Lease 
     fields = ['is_notrenewed', 'unit', 
     'is_terminated'] 
     #provider = django_filters.ModelChoiceFilter(queryset=Provider.objects.all(), 
     #name = django_filters.ModelChoiceFilter(queryset=Lease.objects.all().order_by('name')) 
+0

hast du '__init__' im App-Verzeichnis hinzugefügt? – kt14

+0

"Und schließlich, in all meinen Apps habe ich hinzugefügt: [Importe]" Könnten Sie bitte ein aktuelles Beispiel angeben? – vmonteco

+0

Der Traceback zeigt an, dass der Fehler in 'rentout \ lease \ models.py' liegt, den Sie nicht angezeigt haben. – Alasdair

Antwort

1

Ich glaube nicht, dass die LeaseFilter Klasse gehört in Ihren Modellen nicht mit einberechnet. Es sieht so aus, als würde es versuchen, Abfragen auszuführen, wenn die Klasse geladen wird. Da die Modelle noch nicht geladen wurden, führt dies zum Fehler. Versuchen Sie, die Klasse woanders zu verschieben, zum Beispiel Ihre views.py.

Verwandte Themen