0

いくつかのdjangoコードでいくつかのエッジケースを処理していますが、特定のフィールドが関係している場合にのみ発生する問題が発生しています。

モデルがフィールドに使用しているクラスを検出できるようにしたいのですが、結果に応じて代替ロジックにドロップします。

フィールドインスタンスで使用しようとしましget_internal_type()たが、返されるだけ"BooleanField"で期待どおりではありません"ModifiedField"

カスタムフィールドタイプ:

class ModifiedField(models.BooleanField):
    def __init__(self, *args, **kwargs):
        kwargs['editable'] = False
        models.BooleanField.__init__(self, *args, **kwargs)

    def pre_save(self, model_instance, add):
        value = getattr(model_instance, self.attname)

        if add:
            return True
        elif value == 2:
            return False
        else:
            return True

モデル:

class TemplateItem(models.Model):
    uuid = UUIDField(primary_key=True)
    name = models.CharField(null=False, blank=True, max_length=255)
    image = models.ImageField(_('Image'), upload_to=_template_image_upload_path,
                              storage=item_fs, null=True, blank=True)
    is_modified = ModifiedField()
4

2 に答える 2

1

クラスを試しましたか._名前_??

g = TemplateItem.objects.get(id=1)
g.__class__.__name__
于 2013-03-18T15:23:19.533 に答える
0
fld_cls = type(model_instance._meta.get_field(fieldname))
于 2013-03-18T15:24:39.500 に答える