gpt4 book ai didi

python - 检查 Django 中是否存在模型字段

转载 作者:太空狗 更新时间:2023-10-29 16:54:46 26 4
gpt4 key购买 nike

这是我在 models.py 中提出的解决方案:

from django.db import models

@classmethod
def model_field_exists(cls, field):
try:
cls._meta.get_field(field)
return True
except models.FieldDoesNotExist:
return False

models.Model.field_exists = model_field_exists

像这样使用它:

Post.field_exists('title') # > True or False

问题来自外键,我的 Post 模型属于一个类别,此检查有效:

Post.field_exists('category') # > True

但这个不是:

Post.field_exists('category_id') # > False

这是数据库中的实际字段名称,我需要像这样检查它。我怎样才能在 Django 中做到这一点?

最佳答案

hasattr(cls,field) 并非在所有情况下都有效,例如使用 mixins 的情况。一个安全的测试是:

            try:
model._meta.get_field(field)
.. do stuff here
except FieldDoesNotExist:
pass

            field = None
try:
field = model._meta.get_field(field)
except FieldDoesNotExist:
pass

if field:
.. do stuff here

关于python - 检查 Django 中是否存在模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29034721/

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