我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用django.db.models.base.ModelBase()。
def _check_generic_foreign_key_existence(self): target = self.remote_field.model if isinstance(target, ModelBase): fields = target._meta.virtual_fields if any(isinstance(field, GenericForeignKey) and field.ct_field == self.content_type_field_name and field.fk_field == self.object_id_field_name for field in fields): return [] else: return [ checks.Error( ("The GenericRelation defines a relation with the model " "'%s.%s', but that model does not have a GenericForeignKey.") % ( target._meta.app_label, target._meta.object_name ), hint=None, obj=self, id='contenttypes.E004', ) ] else: return []
def _get_queryset(klass): """ Returns a QuerySet from a Model, Manager, or QuerySet. Created to make get_object_or_404 and get_list_or_404 more DRY. Raises a ValueError if klass is not a Model, Manager, or QuerySet. """ if isinstance(klass, QuerySet): return klass elif isinstance(klass, Manager): manager = klass elif isinstance(klass, ModelBase): manager = klass._default_manager else: if isinstance(klass, type): klass__name = klass.__name__ else: klass__name = klass.__class__.__name__ raise ValueError("Object is of type '%s', but must be a Django Model, " "Manager, or QuerySet" % klass__name) return manager.all()
def _check_generic_foreign_key_existence(self): target = self.remote_field.model if isinstance(target, ModelBase): fields = target._meta.private_fields if any(self._is_matching_generic_foreign_key(field) for field in fields): return [] else: return [ checks.Error( "The GenericRelation defines a relation with the model " "'%s.%s', but that model does not have a GenericForeignKey." % ( target._meta.app_label, target._meta.object_name ), obj=self, id='contenttypes.E004', ) ] else: return []
def unregister(self, model_or_iterable): """ Unregisters the given model(s). If a model isn't already registered, this will raise NotRegistered. """ from xadmin.views.base import BaseAdminView if isinstance(model_or_iterable, (ModelBase, BaseAdminView)): model_or_iterable = [model_or_iterable] for model in model_or_iterable: if isinstance(model, ModelBase): if model not in self._registry: raise NotRegistered( 'The model %s is not registered' % model.__name__) del self._registry[model] else: if model not in self._registry_avs: raise NotRegistered('The admin_view_class %s is not registered' % model.__name__) del self._registry_avs[model]
def unregister(self, model_or_iterable): """ ?? Model ? OptionClass ??? ?? Model ? OptionClass ????????? :exc:`xadmin.sites.NotRegistered` ?? """ from xadmin.views.base import BaseView if isinstance(model_or_iterable, (ModelBase, BaseView)): model_or_iterable = [model_or_iterable] for model in model_or_iterable: if isinstance(model, ModelBase): if model not in self._registry: raise NotRegistered( 'The model %s is not registered' % model.__name__) del self._registry[model] else: if model not in self._registry_avs: raise NotRegistered('The admin_view_class %s is not registered' % model.__name__) del self._registry_avs[model]
def call_superclass_new_method(self, model_name, bases, attrs): """call __new__ method of super class and return the newly created class. Also work around a limitation in Django's ModelBase.""" # There seems to be a general limitation in Django's app_label handling # regarding abstract models (in ModelBase). See issue 1 on github - TODO: propose patch for Django # We run into this problem if polymorphic.py is located in a top-level directory # which is directly in the python path. To work around this we temporarily set # app_label here for PolymorphicModel. meta = attrs.get('Meta', None) do_app_label_workaround = (meta and attrs['__module__'] == 'polymorphic' and model_name == 'PolymorphicModel' and getattr(meta, 'app_label', None) is None) if do_app_label_workaround: meta.app_label = 'poly_dummy_app_label' new_class = super(PolymorphicModelBase, self).__new__(self, model_name, bases, attrs) if do_app_label_workaround: del(meta.app_label) return new_class
def register(self, model_or_iterable, controller_class=None, **options): """ Registers the given model(s) with the given controller class. The model(s) should be Model classes, not instances. If a controller class isn't given, it will use Controller (the default options). If keyword arguments are given -- e.g., list_display -- they'll be applied as options to the controller class. If a model is already registered, this will raise AlreadyRegistered. If a model is abstract, this will raise ImproperlyConfigured. """ from django.db.models.base import ModelBase if not controller_class: from .controller import Controller controller_class = Controller if isinstance(model_or_iterable, ModelBase): model_or_iterable = [model_or_iterable] for model in model_or_iterable: super(Backend, self).register(controller_class, model, **options)
def _get_queryset(klass): """ Returns a QuerySet from a Model, Manager, or QuerySet. Created to make get_object_or_404 and get_list_or_404 more DRY. Raises a ValueError if klass is not a Model, Manager, or QuerySet. """ if isinstance(klass, QuerySet): return klass elif isinstance(klass, Manager): manager = klass elif isinstance(klass, ModelBase): manager = klass._default_manager else: klass__name = klass.__name__ if isinstance(klass, type) \ else klass.__class__.__name__ raise ValueError("Object is of type '%s', but must be a Django Model, " "Manager, or QuerySet" % klass__name) return manager.all()