evennia/docs/latest/api/evennia.objects.models.html
Evennia docbuilder action 7459519cd4 Updated HTML docs.
2023-12-20 19:10:36 +00:00

664 lines
No EOL
42 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.objects.models &#8212; Evennia latest documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="evennia.objects.objects" href="evennia.objects.objects.html" />
<link rel="prev" title="evennia.objects.manager" href="evennia.objects.manager.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.objects.objects.html" title="evennia.objects.objects"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="evennia.objects.manager.html" title="evennia.objects.manager"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia latest</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.objects.html" accesskey="U">evennia.objects</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.objects.models</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<h4>Previous topic</h4>
<p class="topless"><a href="evennia.objects.manager.html"
title="previous chapter">evennia.objects.manager</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="evennia.objects.objects.html"
title="next chapter">evennia.objects.objects</a></p>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.objects.models.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li>
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
<a href="https://evennia.blogspot.com/">Blog</a>
</li>
</ul>
<h3>Doc Versions</h3>
<ul>
<li><a href="evennia.objects.models.html">latest (main branch)</a></li>
<li><a href="../../2.x/index.html">2.x (v2.0.0 branch)</a></li>
<li><a href="../../1.x/index.html">1.x (v1.0.0 branch)</a></li>
<li><a href="../../0.x/index.html">0.x (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.objects.models">
<span id="evennia-objects-models"></span><h1>evennia.objects.models<a class="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>
<dl class="py class">
<dt id="evennia.objects.models.ContentsHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.objects.models.</code><code class="sig-name descname">ContentsHandler</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ContentsHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Handles and caches the contents of an object to avoid excessive
lookups (this is done very often due to cmdhandler needing to look
for object-cmdsets). It is stored on the contents_cache property
of the ObjectDB.</p>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ContentsHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Sets up the contents handler.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>obj</strong> (<em>Object</em>) The object on which the
handler is defined</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This was changed from using <strong>set</strong> to using <strong>dict</strong> internally
in order to retain insertion order.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.load">
<code class="sig-name descname">load</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.load"><span class="viewcode-link">[source]</span></a><a class="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>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Objects (list of ObjectDB)</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.init">
<code class="sig-name descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.init"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ContentsHandler.init" title="Permalink to this definition"></a></dt>
<dd><p>Re-initialize the content cache</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">exclude</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">content_type</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ContentsHandler.get" title="Permalink to this definition"></a></dt>
<dd><p>Return the contents of the cache.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="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, dont filter.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>objects (list)</em> the Objects inside this location</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ContentsHandler.add" title="Permalink to this definition"></a></dt>
<dd><p>Add a new object to this location</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>obj</strong> (<em>Object</em>) object to add</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.remove">
<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ContentsHandler.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove object from this location</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>obj</strong> (<em>Object</em>) object to remove</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ContentsHandler.clear">
<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ContentsHandler.clear"><span class="viewcode-link">[source]</span></a><a class="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>
<dl class="py class">
<dt id="evennia.objects.models.ObjectDB">
<em class="property">class </em><code class="sig-prename descclassname">evennia.objects.models.</code><code class="sig-name descname">ObjectDB</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ObjectDB"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ObjectDB" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.typeclasses.models.html#evennia.typeclasses.models.TypedObject" title="evennia.typeclasses.models.TypedObject"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.typeclasses.models.TypedObject</span></code></a></p>
<p>All objects in the game use the ObjectDB model to store
data in the database. This is handled transparently through
the typeclass system.</p>
<p>Note that the base objectdb is very simple, with
few defined fields. Use attributes to extend your
type class with new database-stored variables.</p>
<p>The TypedObject supplies the following (inherited) properties:</p>
<blockquote>
<div><ul class="simple">
<li><p>key - main name</p></li>
<li><p>name - alias for key</p></li>
<li><p>db_typeclass_path - the path to the decorating typeclass</p></li>
<li><p>db_date_created - time stamp of object creation</p></li>
<li><p>permissions - perm strings</p></li>
<li><p>locks - lock definitions (handler)</p></li>
<li><p>dbref - #id of object</p></li>
<li><p>db - persistent attribute storage</p></li>
<li><p>ndb - non-persistent attribute storage</p></li>
</ul>
</div></blockquote>
<p>The ObjectDB adds the following properties:</p>
<blockquote>
<div><ul class="simple">
<li><p>account - optional connected account (always together with sessid)</p></li>
<li><p>sessid - optional connection session id (always together with account)</p></li>
<li><p>location - in-game location of object</p></li>
<li><p>home - safety location for object (handler)</p></li>
<li><p>scripts - scripts assigned to object (handler from typeclass)</p></li>
<li><p>cmdset - active cmdset on object (handler from typeclass)</p></li>
<li><p>aliases - aliases for this object (property)</p></li>
<li><p>nicks - nicknames for <em>other</em> things in Evennia (handler)</p></li>
<li><p>sessions - sessions connected to this object (see also account)</p></li>
<li><p>has_account - bool if an active account is currently connected</p></li>
<li><p>contents - other objects having this object as location</p></li>
<li><p>exits - exits from this object</p></li>
</ul>
</div></blockquote>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_account">
<code class="sig-name descname">db_account</code><a class="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
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_sessid">
<code class="sig-name descname">db_sessid</code><a class="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
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_location">
<code class="sig-name descname">db_location</code><a class="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
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_home">
<code class="sig-name descname">db_home</code><a class="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
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_destination">
<code class="sig-name descname">db_destination</code><a class="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
one-to-one (via ForwardOneToOneDescriptor subclass) relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Child.parent**</strong> is a <strong>**ForwardManyToOneDescriptor**</strong> instance.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_cmdset_storage">
<code class="sig-name descname">db_cmdset_storage</code><a class="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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.objects.manager.ObjectDBManager object&gt;</em><a class="headerlink" href="#evennia.objects.models.ObjectDB.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.contents_cache">
<code class="sig-name descname">contents_cache</code><a class="reference internal" href="../_modules/evennia/objects/models.html#ObjectDB.contents_cache"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.objects.models.ObjectDB.contents_cache" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.cmdset_storage">
<em class="property">property </em><code class="sig-name descname">cmdset_storage</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.cmdset_storage" title="Permalink to this definition"></a></dt>
<dd><p>getter</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.location">
<em class="property">property </em><code class="sig-name descname">location</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.location" title="Permalink to this definition"></a></dt>
<dd><p>Get location</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.at_db_location_postsave">
<code class="sig-name descname">at_db_location_postsave</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">new</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/objects/models.html#ObjectDB.at_db_location_postsave"><span class="viewcode-link">[source]</span></a><a class="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>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>new</strong> (<em>bool</em>) Set if this location has not yet been saved before.</p>
</dd>
</dl>
</dd></dl>
<dl class="py exception">
<dt id="evennia.objects.models.ObjectDB.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="py exception">
<dt id="evennia.objects.models.ObjectDB.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.account">
<em class="property">property </em><code class="sig-name descname">account</code><a class="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>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_account_id">
<code class="sig-name descname">db_account_id</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.db_account_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_attributes">
<code class="sig-name descname">db_attributes</code><a class="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
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_date_created">
<code class="sig-name descname">db_date_created</code><a class="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
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_destination_id">
<code class="sig-name descname">db_destination_id</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.db_destination_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_home_id">
<code class="sig-name descname">db_home_id</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.db_home_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_key">
<code class="sig-name descname">db_key</code><a class="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
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_location_id">
<code class="sig-name descname">db_location_id</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.db_location_id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_lock_storage">
<code class="sig-name descname">db_lock_storage</code><a class="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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_tags">
<code class="sig-name descname">db_tags</code><a class="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
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.db_typeclass_path">
<code class="sig-name descname">db_typeclass_path</code><a class="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
object the first time, the query is executed.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.destination">
<em class="property">property </em><code class="sig-name descname">destination</code><a class="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>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.destinations_set">
<code class="sig-name descname">destinations_set</code><a class="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
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</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>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.get_next_by_db_date_created">
<code class="sig-name descname">get_next_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=True</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.objects.models.ObjectDB.get_next_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.get_previous_by_db_date_created">
<code class="sig-name descname">get_previous_by_db_date_created</code><span class="sig-paren">(</span><em class="sig-param">*</em>, <em class="sig-param">field=&lt;django.db.models.fields.DateTimeField: db_date_created&gt;</em>, <em class="sig-param">is_next=False</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.objects.models.ObjectDB.get_previous_by_db_date_created" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.hide_from_objects_set">
<code class="sig-name descname">hide_from_objects_set</code><a class="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
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<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>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.home">
<em class="property">property </em><code class="sig-name descname">home</code><a class="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>
</dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.homes_set">
<code class="sig-name descname">homes_set</code><a class="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
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.objects.models.ObjectDB.id" 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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.locations_set">
<code class="sig-name descname">locations_set</code><a class="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
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.object_subscription_set">
<code class="sig-name descname">object_subscription_set</code><a class="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
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.objects.models.ObjectDB'</em><a class="headerlink" href="#evennia.objects.models.ObjectDB.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.receiver_object_set">
<code class="sig-name descname">receiver_object_set</code><a class="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
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.scriptdb_set">
<code class="sig-name descname">scriptdb_set</code><a class="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
many-to-one relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Child</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">ForeignKey</span><span class="p">(</span><span class="n">Parent</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;children&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>**Parent.children**</strong> is a <strong>**ReverseManyToOneDescriptor**</strong> instance.</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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.sender_object_set">
<code class="sig-name descname">sender_object_set</code><a class="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
a many-to-many relation.</p>
<p>In the example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">Pizza</span><span class="p">(</span><span class="n">Model</span><span class="p">):</span>
<span class="n">toppings</span> <span class="o">=</span> <span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Topping</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">&#39;pizzas&#39;</span><span class="p">)</span>
</pre></div>
</div>
<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>
<dl class="py method">
<dt id="evennia.objects.models.ObjectDB.sessid">
<em class="property">property </em><code class="sig-name descname">sessid</code><a class="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>
<dl class="py attribute">
<dt id="evennia.objects.models.ObjectDB.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'SharedMemoryModelBase'</em><a class="headerlink" href="#evennia.objects.models.ObjectDB.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</section>
</div>
</div>
</div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="evennia.objects.objects.html" title="evennia.objects.objects"
>next</a> |</li>
<li class="right" >
<a href="evennia.objects.manager.html" title="evennia.objects.manager"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia latest</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../Evennia-API.html" >API Summary</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="evennia-api.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="evennia.html" >evennia</a> &#187;</li>
<li class="nav-item nav-item-4"><a href="evennia.objects.html" >evennia.objects</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.objects.models</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2023, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>