gpt4 book ai didi

python - 装饰器中的 Django Model._meta.get_fields()

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:44 27 4
gpt4 key购买 nike

我需要访问装饰器中的模型类字段:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com