2017-01-18 2 views
2

Ich brauche den Zugang zu Modellklasse fileds in Dekorateur:Django Model._meta.get_fields() in Dekorateur

from django.db import models 


class Register: 
    REGISTRY = {} 

    def __init__(self, name): 
     self.name = name 

    def __call__(self, cls): 
     self.register(cls) 
     return cls 

    def register(self, cls): 
     print(cls.__name__, '-', self.name) # prints: Item - Item registered 
     print(cls._meta.get_fields()) # raises: django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. 

@Register('Item registered') 
class Item(models.Model): 
    title = models.CharField(max_length=200, verbose_name='Title') 

cls._meta.get_fields() wirft: django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

Wie Felder zugreifen?

Antwort

0

Also habe ich versucht, dies auf meiner eigenen Maschine mit Django 1.8 zu replizieren, fand ich heraus, dass Modellfelder von ._meta.fields auch zugegriffen werden kann.

class Register: 
    REGISTRY = {} 

    def __init__(self, name): 
     self.name = name 

    def __call__(self, cls): 
     self.register(cls) 
     return cls 

    def register(self, cls): 
     print(cls.__name__, '-', self.name) # prints: Item - Item registered 
     print(cls._meta.fields) # prints all fields 
+0

Es funktioniert. Vielen Dank! – DispName