我需要访问装饰器中的模型类字段:
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() 引发:
django.core.exceptions.AppRegistryNotReady:模型尚未加载。
如何访问字段?
最佳答案
所以,我尝试在我自己的机器上使用 django 1.8 复制它,我发现模型字段也可以通过 ._meta.fields
访问。
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
关于python - 装饰器中的 Django Model._meta.get_fields(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726727/