Documente Academic
Documente Profesional
Documente Cultură
aren't allowed in Python variable names -- notably, the hyphen -- that's OK.
Django quotes column and table names behind the scenes.
.. admonition:: Use lowercase table names for MySQL
It is strongly advised that you use lowercase table names when you override
the table name via ``db_table``, particularly if you are using the MySQL
backend. See the :ref:`MySQL notes <mysql-notes>` for more details.
``db_tablespace``
----------------.. attribute:: Options.db_tablespace
The name of the :doc:`database tablespace </topics/db/tablespaces>` to use
for this model. The default is the project's :setting:`DEFAULT_TABLESPACE`
setting, if set. If the backend doesn't support tablespaces, this option is
ignored.
``get_latest_by``
----------------.. attribute:: Options.get_latest_by
The name of an orderable field in the model, typically a :class:`DateField`,
:class:`DateTimeField`, or :class:`IntegerField`. This specifies the default
field to use in your model :class:`Manager`'s
:meth:`~django.db.models.query.QuerySet.latest` method.
Example::
get_latest_by = "order_date"
See the :meth:`~django.db.models.query.QuerySet.latest` docs for more.
``managed``
----------.. attribute:: Options.managed
Defaults to ``True``, meaning Django will create the appropriate database
tables in :djadmin:`syncdb` and remove them as part of a :djadmin:`flush`
management command. That is, Django *manages* the database tables'
lifecycles.
If ``False``, no database table creation or deletion operations will be
performed for this model. This is useful if the model represents an existing
table or a database view that has been created by some other means. This is
the *only* difference when ``managed=False``. All other aspects of
model handling are exactly the same as normal. This includes
1. Adding an automatic primary key field to the model if you don't
declare it. To avoid confusion for later code readers, it's
recommended to specify all the columns from the database table you
are modeling when using unmanaged models.
2. If a model with ``managed=False`` contains a
:class:`~django.db.models.ManyToManyField` that points to another
unmanaged model, then the intermediate table for the many-to-many
eir
proper order. Assuming the ``Answer`` objects are ordered by ``id``::
>>> answer = Answer.objects.get(id=2)
>>> answer.get_next_in_order()
<Answer: 3>
>>> answer.get_previous_in_order()
<Answer: 1>
.. admonition:: Changing order_with_respect_to
``order_with_respect_to`` adds an additional field/database column
named ``_order``, so be sure to handle that as you would any other
change to your models if you add or change ``order_with_respect_to``
after your initial :djadmin:`syncdb`.
``ordering``
-----------.. attribute:: Options.ordering
The default ordering for the object, for use when obtaining lists of objects
::
ordering = ['-order_date']
This is a tuple or list of strings. Each string is a field name with an opti
onal
"-" prefix, which indicates descending order. Fields without a leading "-" w
ill
be ordered ascending. Use the string "?" to order randomly.
For example, to order by a ``pub_date`` field ascending, use this::
ordering = ['pub_date']
To order by ``pub_date`` descending, use this::
ordering = ['-pub_date']
To order by ``pub_date`` descending, then by ``author`` ascending, use this:
:
ordering = ['-pub_date', 'author']
.. versionchanged:: 1.4
The Django admin honors all elements in the list/tuple; before 1.4, only
the first one was respected.
``permissions``
--------------.. attribute:: Options.permissions
Extra permissions to enter into the permissions table when creating this obj
ect.
Add, delete and change permissions are automatically created for each object
that has ``admin`` set. This example specifies an extra permission,
``can_deliver_pizzas``::