djangordf.admin

Django-style admin for RDFModel classes. Mirrors the django.contrib.admin shape but runs on its own RDFAdminSite because RDFModel is not a django.db.models.Model.

Django-style admin for RDFModel classes.

Mirrors django.contrib.admin shape but runs on its own RDFAdminSite because RDFModel is not a django.db.models.Model. Register a model with rdf_admin_site.register and include rdf_admin_site.urls in your project’s URL config.

class djangordf.admin.RDFAdminSite(name='djangordf_admin')[source]

Bases: object

Per-process registry plus URL conf for RDFModel admins.

Parameters:

name (str)

get_admin(model_name)[source]
Return type:

RDFModelAdmin

Parameters:

model_name (str)

get_urls()[source]
is_registered(model_class)[source]
Return type:

bool

register(model_class, admin_class=None)[source]

Register a model class with an optional admin class.

Use the two-arg form for explicit registration:

rdf_admin_site.register(Term, TermAdmin)

or the decorator form, mirroring Django’s @admin.register(Model):

@rdf_admin_site.register(Term)
class TermAdmin(RDFModelAdmin):
    list_display = ("iri", "pref_label")
Parameters:

admin_class (Type[RDFModelAdmin] | None)

registered()[source]
Return type:

Dict[str, RDFModelAdmin]

unregister(model_class)[source]
property urls
class djangordf.admin.RDFModelAdmin(model_class, site)[source]

Bases: object

Declarative configuration for an RDFModel in the RDFAdminSite UI.

fields: Optional[Sequence[str]] = None
get_form_class()[source]
get_object(iri)[source]
get_queryset()[source]
list_columns()[source]
Return type:

Iterable[str]

list_display: Sequence[str] = ('iri',)
paginate_by: int = 50
readonly_fields: Sequence[str] = ()
render_list_cell(instance, column)[source]

Stringify one cell of the list view.

Parameters:

column (str)

class djangordf.admin.RDFModelForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None, bound_field_class=None)[source]

Bases: Form

Marker base class so callers can isinstance-check generated forms. Real forms are constructed by build_form_class() and inherit from forms.Form (not this class) — type stays available for static-typing purposes only.

base_fields = {}
declared_fields = {}
classmethod for_model(model_class, *, fields=None)[source]
Return type:

type

property media

Return all media required to render the widgets on this form.

RDFAdminSite — a parallel admin site for RDFModel classes.

Because RDFModel is not a django.db.models.Model, registering it through django.contrib.admin.site.register() is not possible. This site keeps its own registry and URL conf; include rdf_admin_site.urls in your project’s URL config to mount it.

class djangordf.admin.sites.RDFAdminSite(name='djangordf_admin')[source]

Bases: object

Per-process registry plus URL conf for RDFModel admins.

Parameters:

name (str)

register(model_class, admin_class=None)[source]

Register a model class with an optional admin class.

Use the two-arg form for explicit registration:

rdf_admin_site.register(Term, TermAdmin)

or the decorator form, mirroring Django’s @admin.register(Model):

@rdf_admin_site.register(Term)
class TermAdmin(RDFModelAdmin):
    list_display = ("iri", "pref_label")
Parameters:

admin_class (Type[RDFModelAdmin] | None)

unregister(model_class)[source]
is_registered(model_class)[source]
Return type:

bool

get_admin(model_name)[source]
Return type:

RDFModelAdmin

Parameters:

model_name (str)

registered()[source]
Return type:

Dict[str, RDFModelAdmin]

property urls
get_urls()[source]

RDFModelAdmin — declarative admin class for RDFModel classes.

Mirrors django.contrib.admin.ModelAdmin’s declaration shape without inheriting from it. Honours list_display, fields, readonly_fields, and paginate_by.

class djangordf.admin.options.RDFModelAdmin(model_class, site)[source]

Bases: object

Declarative configuration for an RDFModel in the RDFAdminSite UI.

list_display: Sequence[str] = ('iri',)
fields: Optional[Sequence[str]] = None
readonly_fields: Sequence[str] = ()
paginate_by: int = 50
get_queryset()[source]
get_object(iri)[source]
get_form_class()[source]
render_list_cell(instance, column)[source]

Stringify one cell of the list view.

Parameters:

column (str)

list_columns()[source]
Return type:

Iterable[str]

Auto-generated Django forms for RDFModel classes.

Property-to-form-field mapping:

  • DataProperty(datatype=XSD.string) (or no datatype) → CharField

  • DataProperty(datatype=XSD.integer)IntegerField

  • DataProperty(datatype=XSD.boolean)BooleanField

  • DataProperty(datatype=XSD.float)FloatField

  • DataProperty(datatype=XSD.dateTime)DateTimeField

  • LangStringPropertyCharField with value@lang text shape

  • URIPropertyURLField

  • ObjectPropertyCharField taking the target’s IRI verbatim

  • many=True on any of the above → CharField rendered as a Textarea, one value per non-empty line

required= on the property propagates to the form field.

djangordf.admin.forms.build_form_class(model_class, *, fields=None)[source]

Construct a Django forms.Form subclass with one field per declared property of model_class. fields optionally restricts the field set, in order.

Return type:

type

class djangordf.admin.forms.RDFModelForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None, bound_field_class=None)[source]

Bases: Form

Marker base class so callers can isinstance-check generated forms. Real forms are constructed by build_form_class() and inherit from forms.Form (not this class) — type stays available for static-typing purposes only.

classmethod for_model(model_class, *, fields=None)[source]
Return type:

type

base_fields = {}
declared_fields = {}
property media

Return all media required to render the widgets on this form.