<pclass="last">You are reading an old version of the Evennia documentation. <ahref="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
<spanid="evennia-objects-models"></span><h1>evennia.objects.models<aclass="headerlink"href="#module-evennia.objects.models"title="Permalink to this headline">¶</a></h1>
<p>This module defines the database models for all in-game objects, that
is, all objects that has an actual existence in-game.</p>
<p>Each database object is ‘decorated’ with a ‘typeclass’, a normal
python class that implements all the various logics needed by the game
in question. Objects created of this class transparently communicate
with its related database object for storing all attributes. The
admin should usually not have to deal directly with this database
object layer.</p>
<p>Attributes are separate objects that store values persistently onto
the database object. Like everything else, they can be accessed
transparently through the decorating TypeClass.</p>
<dlclass="py class">
<dtid="evennia.objects.models.ContentsHandler">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.objects.models.</code><codeclass="sig-name descname">ContentsHandler</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Sets up the contents handler.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>obj</strong> (<em>Object</em>) – The object on which the
handler is defined</p>
</dd>
</dl>
<pclass="rubric">Notes</p>
<p>This was changed from using <strong>set</strong> to using <strong>dict</strong> internally
<codeclass="sig-name descname">load</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.load"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.load"title="Permalink to this definition">¶</a></dt>
<dd><p>Retrieves all objects from database. Used for initializing.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Returns</dt>
<ddclass="field-odd"><p>Objects (list of ObjectDB)</p>
<codeclass="sig-name descname">init</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.init"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.init"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">exclude</span><spanclass="o">=</span><spanclass="default_value">None</span></em>, <emclass="sig-param"><spanclass="n">content_type</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.get"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.get"title="Permalink to this definition">¶</a></dt>
<dd><p>Return the contents of the cache.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>exclude</strong> (<em>Object</em><em> or </em><em>list of Object</em>) – object(s) to ignore</p></li>
<li><p><strong>content_type</strong> (<em>str</em><em> or </em><em>None</em>) – Filter list by a content-type. If None, don’t filter.</p></li>
</ul>
</dd>
<dtclass="field-even">Returns</dt>
<ddclass="field-even"><p><em>objects (list)</em>– the Objects inside this location</p>
<codeclass="sig-name descname">add</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.add"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.add"title="Permalink to this definition">¶</a></dt>
<dd><p>Add a new object to this location</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>obj</strong> (<em>Object</em>) – object to add</p>
<codeclass="sig-name descname">remove</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">obj</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.remove"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.remove"title="Permalink to this definition">¶</a></dt>
<dd><p>Remove object from this location</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>obj</strong> (<em>Object</em>) – object to remove</p>
<codeclass="sig-name descname">clear</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ContentsHandler.clear"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ContentsHandler.clear"title="Permalink to this definition">¶</a></dt>
<dd><p>Clear the contents cache and re-initialize</p>
</dd></dl>
</dd></dl>
<dlclass="py class">
<dtid="evennia.objects.models.ObjectDB">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.objects.models.</code><codeclass="sig-name descname">ObjectDB</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ObjectDB"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ObjectDB"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">db_account</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_account"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<codeclass="sig-name descname">db_sessid</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_sessid"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_location</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_location"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dlclass="py attribute">
<dtid="evennia.objects.models.ObjectDB.db_home">
<codeclass="sig-name descname">db_home</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_home"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<codeclass="sig-name descname">db_destination</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_destination"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related object on the forward side of a many-to-one or
<codeclass="sig-name descname">db_cmdset_storage</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_cmdset_storage"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dlclass="py attribute">
<dtid="evennia.objects.models.ObjectDB.objects">
<codeclass="sig-name descname">objects</code><emclass="property"> = <evennia.objects.manager.ObjectDBManager object></em><aclass="headerlink"href="#evennia.objects.models.ObjectDB.objects"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">contents_cache</code><aclass="reference internal"href="../_modules/evennia/objects/models.html#ObjectDB.contents_cache"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ObjectDB.contents_cache"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">cmdset_storage</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.cmdset_storage"title="Permalink to this definition">¶</a></dt>
<dd><p>getter</p>
</dd></dl>
<dlclass="py method">
<dtid="evennia.objects.models.ObjectDB.location">
<emclass="property">property </em><codeclass="sig-name descname">location</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.location"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_db_location_postsave</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">new</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/objects/models.html#ObjectDB.at_db_location_postsave"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.objects.models.ObjectDB.at_db_location_postsave"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called automatically after the location field was
saved, no matter how. It checks for a variable
_safe_contents_update to know if the save was triggered via
the location handler (which updates the contents cache) or
not.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>new</strong> (<em>bool</em>) – Set if this location has not yet been saved before.</p>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<emclass="property">property </em><codeclass="sig-name descname">account</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.account"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_account</strong>.</p>
<codeclass="sig-name descname">db_account_id</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_account_id"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">db_attributes</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_attributes"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<codeclass="sig-name descname">db_date_created</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_date_created"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_destination_id</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_destination_id"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">db_home_id</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_home_id"title="Permalink to this definition">¶</a></dt>
<dd></dd></dl>
<dlclass="py attribute">
<dtid="evennia.objects.models.ObjectDB.db_key">
<codeclass="sig-name descname">db_key</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_key"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<codeclass="sig-name descname">db_location_id</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_location_id"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">db_lock_storage</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_lock_storage"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dlclass="py attribute">
<dtid="evennia.objects.models.ObjectDB.db_tags">
<codeclass="sig-name descname">db_tags</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_tags"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<codeclass="sig-name descname">db_typeclass_path</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.db_typeclass_path"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
<emclass="property">property </em><codeclass="sig-name descname">destination</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.destination"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_destination</strong>.</p>
<codeclass="sig-name descname">destinations_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.destinations_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
<codeclass="sig-name descname">get_next_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=True</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.objects.models.ObjectDB.get_next_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">get_previous_by_db_date_created</code><spanclass="sig-paren">(</span><emclass="sig-param">*</em>, <emclass="sig-param">field=<django.db.models.fields.DateTimeField: db_date_created></em>, <emclass="sig-param">is_next=False</em>, <emclass="sig-param">**kwargs</em><spanclass="sig-paren">)</span><aclass="headerlink"href="#evennia.objects.models.ObjectDB.get_previous_by_db_date_created"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">hide_from_objects_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.hide_from_objects_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dlclass="py method">
<dtid="evennia.objects.models.ObjectDB.home">
<emclass="property">property </em><codeclass="sig-name descname">home</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.home"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_home</strong>.</p>
<codeclass="sig-name descname">homes_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.homes_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
<codeclass="sig-name descname">locations_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.locations_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
<codeclass="sig-name descname">object_subscription_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.object_subscription_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dlclass="py attribute">
<dtid="evennia.objects.models.ObjectDB.path">
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.objects.models.ObjectDB'</em><aclass="headerlink"href="#evennia.objects.models.ObjectDB.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">receiver_object_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.receiver_object_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<codeclass="sig-name descname">scriptdb_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.scriptdb_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the reverse side of a
<codeclass="sig-name descname">sender_object_set</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.sender_object_set"title="Permalink to this definition">¶</a></dt>
<dd><p>Accessor to the related objects manager on the forward and reverse sides of
<p><strong>**Pizza.toppings**</strong> and <strong>**Topping.pizzas**</strong> are <strong>**ManyToManyDescriptor**</strong>
instances.</p>
<p>Most of the implementation is delegated to a dynamically defined manager
class built by <strong>**create_forward_many_to_many_manager()**</strong> defined below.</p>
</dd></dl>
<dlclass="py method">
<dtid="evennia.objects.models.ObjectDB.sessid">
<emclass="property">property </em><codeclass="sig-name descname">sessid</code><aclass="headerlink"href="#evennia.objects.models.ObjectDB.sessid"title="Permalink to this definition">¶</a></dt>
<dd><p>A wrapper for getting database field <strong>db_sessid</strong>.</p>
</dd></dl>
<dlclass="py attribute">
<dtid="evennia.objects.models.ObjectDB.typename">
<codeclass="sig-name descname">typename</code><emclass="property"> = 'SharedMemoryModelBase'</em><aclass="headerlink"href="#evennia.objects.models.ObjectDB.typename"title="Permalink to this definition">¶</a></dt>
<pclass="last">You are reading an old version of the Evennia documentation. <ahref="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
</div>
<divclass="footer"role="contentinfo">
© Copyright 2023, The Evennia developer community.
Created using <ahref="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.