mirror of
https://github.com/django/django.git
synced 2025-07-05 02:09:13 +00:00
magic-removal: Did some proofreading to docs/model-api.txt. Not yet done.
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2799 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a1f47af81a
commit
1a02e9d5c3
@ -10,66 +10,408 @@ The basics:
|
|||||||
|
|
||||||
* Each model is a Python class that subclasses ``django.db.models.Model``.
|
* Each model is a Python class that subclasses ``django.db.models.Model``.
|
||||||
* Each attribute of the model represents a database field.
|
* Each attribute of the model represents a database field.
|
||||||
* Model metadata (non-field information) goes in an inner class named ``Meta``.
|
* Model metadata (non-field information) goes in an inner class named
|
||||||
* Metadata used for administration purposes goes into an inner class named ``Admin``.
|
``Meta``.
|
||||||
|
* Metadata used for Django's admin site goes into an inner class named
|
||||||
|
``Admin``.
|
||||||
|
* With all of this, Django gives you an automatically-generated
|
||||||
|
database-access API, which is explained in the `Database API reference`_.
|
||||||
|
|
||||||
A companion to this document is the `official repository of model examples`_.
|
A companion to this document is the `official repository of model examples`_.
|
||||||
|
|
||||||
.. _`official repository of model examples`: http://www.djangoproject.com/documentation/models/
|
.. _Database API reference: http://www.djangoproject.com/documentation/db_api/
|
||||||
|
.. _official repository of model examples: http://www.djangoproject.com/documentation/models/
|
||||||
|
|
||||||
Field objects
|
Quick example
|
||||||
=============
|
=============
|
||||||
|
|
||||||
The most important part of a model is the list of database fields it defines.
|
This example model defines a ``Person``, which has a ``first_name`` and
|
||||||
Fields are defined by class attributes.
|
``last_name``::
|
||||||
|
|
||||||
In this example, there are two fields, ``first_name`` and ``last_name`` ::
|
from django.db import models
|
||||||
|
|
||||||
class Person(models.Model):
|
class Person(models.Model):
|
||||||
first_name = models.CharField(maxlength=30)
|
first_name = models.CharField(maxlength=30)
|
||||||
last_name = models.CharField(maxlength=30)
|
last_name = models.CharField(maxlength=30)
|
||||||
|
|
||||||
Django will use ``first_name`` and ``last_name`` as the database column names.
|
``first_name`` and ``last_name`` are *fields* of the model. Each field is
|
||||||
|
specified as a class attribute, and each attribute maps to a database column.
|
||||||
|
|
||||||
Each field type, except for ``ForeignKey``, ``ManyToManyField`` and
|
The above ``Person`` model would create an SQL table like this::
|
||||||
``OneToOneField``, takes an optional first positional argument -- a
|
|
||||||
human-readable name. If the human-readable name isn't given, Django will
|
|
||||||
automatically create the human-readable name by using the machine-readable
|
|
||||||
name, converting underscores to spaces.
|
|
||||||
|
|
||||||
In this example, the human-readable name is ``"Person's first name"``::
|
CREATE TABLE myapp_person (
|
||||||
|
"id" serial NOT NULL PRIMARY KEY,
|
||||||
|
"first_name" varchar(30) NOT NULL,
|
||||||
|
"last_name" varchar(30) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
first_name = models.CharField("Person's first name", maxlength=30)
|
Three technical notes:
|
||||||
|
|
||||||
In this example, the human-readable name is ``"first name"``::
|
* The name of the table, ``myapp_person``, is automatically derived from
|
||||||
|
some model metadata but can be overridden. See _`Table names` below.
|
||||||
|
* An ``id`` field is added automatically, but this behavior can be
|
||||||
|
overriden. See _`Automatic primary key fields` below.
|
||||||
|
* The ``CREATE TABLE`` SQL in this example is formatted using PostgreSQL
|
||||||
|
syntax, but it's worth noting Django uses SQL tailored to the database
|
||||||
|
backend specified in your `settings file`_.
|
||||||
|
|
||||||
first_name = models.CharField(maxlength=30)
|
.. _settings file: http://www.djangoproject.com/documentation/settings/
|
||||||
|
|
||||||
``ForeignKey``, ``ManyToManyField`` and ``OneToOneField`` require the first
|
Fields
|
||||||
argument to be a model class, so use the ``verbose_name`` keyword argument to
|
======
|
||||||
specify the human-readable name::
|
|
||||||
|
|
||||||
poll = models.ForeignKey(Poll, verbose_name="the related poll")
|
The most important part of a model -- and the only required part of a model --
|
||||||
sites = models.ManyToManyField(Site, verbose_name="list of sites")
|
is the list of database fields it defines. Fields are specified by class
|
||||||
place = models.OneToOneField(Place, verbose_name="related place")
|
attributes.
|
||||||
|
|
||||||
Convention is not to capitalize the first letter of the ``verbose_name``.
|
Example::
|
||||||
Django will automatically capitalize the first letter where it needs to.
|
|
||||||
|
class Musician(models.Model):
|
||||||
|
first_name = models.CharField(maxlength=50)
|
||||||
|
last_name = models.CharField(maxlength=50)
|
||||||
|
instrument = models.CharField(maxlength=100)
|
||||||
|
|
||||||
|
class Album(models.Model):
|
||||||
|
artist = models.ForeignKey(Musician)
|
||||||
|
name = models.CharField(maxlength=100)
|
||||||
|
release_date = models.DateField()
|
||||||
|
num_stars = models.IntegerField()
|
||||||
|
|
||||||
Field name restrictions
|
Field name restrictions
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
TODO: Fill this section.
|
Django places only two restrictions on model field names:
|
||||||
|
|
||||||
* Can't be Python reserved word.
|
1. A field name cannot be a Python reserved word, because that would result
|
||||||
* Can't have more than one underscore in a row, due to query lookup.
|
in a Python syntax error. For example::
|
||||||
|
|
||||||
General field options
|
class Example(models.Model):
|
||||||
---------------------
|
pass = models.IntegerField() # 'pass' is a reserved word!
|
||||||
|
|
||||||
|
2. A field name cannot contain more than one underscore in a row, due to
|
||||||
|
the way Django's query lookup syntax works. For example::
|
||||||
|
|
||||||
|
class Example(models.Model):
|
||||||
|
foo__bar = models.IntegerField() 'foo__bar' has two underscores!
|
||||||
|
|
||||||
|
These limitations can be worked around, though, because your field name doesn't
|
||||||
|
necessarily have to match your database column name. See `db_column`_ below.
|
||||||
|
|
||||||
|
SQL reserved words, such as ``join``, ``where`` or ``select`, *are* allowed as
|
||||||
|
model field names, because Django escapes all database table names and column
|
||||||
|
names in every underlying SQL query. It uses the quoting syntax of your
|
||||||
|
particular database engine.
|
||||||
|
|
||||||
|
Field types
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Each field in your model should be an instance of the appropriate ``Field``
|
||||||
|
class. Django uses the field class types to determine a few things:
|
||||||
|
|
||||||
|
* The database column type (e.g. ``INTEGER``, ``VARCHAR``).
|
||||||
|
* The widget to use in Django's admin interface, if you care to use it
|
||||||
|
(e.g. ``<input type="text">``, ``<select>``).
|
||||||
|
* The minimal validation requirements, used in Django's admin and in
|
||||||
|
manipulators.
|
||||||
|
|
||||||
|
Here are all available field types:
|
||||||
|
|
||||||
|
``AutoField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
An ``IntegerField`` that automatically increments according to available IDs.
|
||||||
|
You usually won't need to use this directly; a primary key field will
|
||||||
|
automatically be added to your model if you don't specify otherwise. See
|
||||||
|
_`Automatic primary key fields`.
|
||||||
|
|
||||||
|
``BooleanField``
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A true/false field.
|
||||||
|
|
||||||
|
The admin represents this as a checkbox.
|
||||||
|
|
||||||
|
``CharField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A string field, for small- to large-sized strings.
|
||||||
|
|
||||||
|
For large amounts of text, use ``TextField``.
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` (a single-line input).
|
||||||
|
|
||||||
|
``CharField`` has an extra required argument, ``maxlength``, the maximum length
|
||||||
|
(in characters) of the field. The maxlength is enforced at the database level
|
||||||
|
and in Django's validation.
|
||||||
|
|
||||||
|
``CommaSeparatedIntegerField``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A field of integers separated by commas. As in ``CharField``, the ``maxlength``
|
||||||
|
argument is required.
|
||||||
|
|
||||||
|
``DateField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A date field. Has a few extra optional arguments:
|
||||||
|
|
||||||
|
====================== ===================================================
|
||||||
|
Argument Description
|
||||||
|
====================== ===================================================
|
||||||
|
``auto_now`` Automatically set the field to now every time the
|
||||||
|
object is saved. Useful for "last-modified"
|
||||||
|
timestamps.
|
||||||
|
|
||||||
|
``auto_now_add`` Automatically set the field to now when the object
|
||||||
|
is first created. Useful for creation of
|
||||||
|
timestamps.
|
||||||
|
====================== ===================================================
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` with a JavaScript
|
||||||
|
calendar and a shortcut for "Today."
|
||||||
|
|
||||||
|
``DateTimeField``
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A date and time field. Takes the same extra options as ``DateField``.
|
||||||
|
|
||||||
|
The admin represents this as two ``<input type="text">`` fields, with
|
||||||
|
JavaScript shortcuts.
|
||||||
|
|
||||||
|
``EmailField``
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A ``CharField`` that checks that the value is a valid e-mail address.
|
||||||
|
This doesn't accept ``maxlength``.
|
||||||
|
|
||||||
|
``FileField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A file-upload field.
|
||||||
|
|
||||||
|
Has an extra required argument, ``upload_to``, a local filesystem path to
|
||||||
|
which files should be upload. This path may contain `strftime formatting`_,
|
||||||
|
which will be replaced by the date/time of the file upload (so that
|
||||||
|
uploaded files don't fill up the given directory).
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="file">`` (a file-upload widget).
|
||||||
|
|
||||||
|
Using a ``FileField`` or an ``ImageField`` (see below) in a model takes a few
|
||||||
|
steps:
|
||||||
|
|
||||||
|
1. In your settings file, you'll need to define ``MEDIA_ROOT`` as the
|
||||||
|
full path to a directory where you'd like Django to store uploaded
|
||||||
|
files. (For performance, these files are not stored in the database.)
|
||||||
|
Define ``MEDIA_URL`` as the base public URL of that directory. Make
|
||||||
|
sure that this directory is writable by the Web server's user
|
||||||
|
account.
|
||||||
|
|
||||||
|
2. Add the ``FileField`` or ``ImageField`` to your model, making sure
|
||||||
|
to define the ``upload_to`` option to tell Django to which
|
||||||
|
subdirectory of ``MEDIA_ROOT`` it should upload files.
|
||||||
|
|
||||||
|
3. All that will be stored in your database is a path to the file
|
||||||
|
(relative to ``MEDIA_ROOT``). You'll must likely want to use the
|
||||||
|
convenience ``get_<fieldname>_url`` function provided by Django. For
|
||||||
|
example, if your ``ImageField`` is called ``mug_shot``, you can get
|
||||||
|
the absolute URL to your image in a template with ``{{
|
||||||
|
object.get_mug_shot_url }}``.
|
||||||
|
|
||||||
|
.. _`strftime formatting`: http://docs.python.org/lib/module-time.html#l2h-1941
|
||||||
|
|
||||||
|
``FilePathField``
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A field whose choices are limited to the filenames in a certain directory
|
||||||
|
on the filesystem. Has three special arguments, of which the first is
|
||||||
|
required:
|
||||||
|
|
||||||
|
====================== ===================================================
|
||||||
|
Argument Description
|
||||||
|
====================== ===================================================
|
||||||
|
``path`` Required. The absolute filesystem path to a
|
||||||
|
directory from which this ``FilePathField`` should
|
||||||
|
get its choices. Example: ``"/home/images"``.
|
||||||
|
|
||||||
|
``match`` Optional. A regular expression, as a string, that
|
||||||
|
``FilePathField`` will use to filter filenames.
|
||||||
|
Note that the regex will be applied to the
|
||||||
|
base filename, not the full path. Example:
|
||||||
|
``"foo.*\.txt^"``, which will match a file called
|
||||||
|
``foo23.txt`` but not ``bar.txt`` or ``foo23.gif``.
|
||||||
|
|
||||||
|
``recursive`` Optional. Either ``True`` or ``False``. Default is
|
||||||
|
``False``. Specifies whether all subdirectories of
|
||||||
|
``path`` should be included.
|
||||||
|
====================== ===================================================
|
||||||
|
|
||||||
|
Of course, these arguments can be used together.
|
||||||
|
|
||||||
|
The one potential gotcha is that ``match`` applies to the base filename,
|
||||||
|
not the full path. So, this example::
|
||||||
|
|
||||||
|
FilePathField(path="/home/images", match="foo.*", recursive=True)
|
||||||
|
|
||||||
|
...will match ``/home/images/foo.gif`` but not ``/home/images/foo/bar.gif``
|
||||||
|
because the ``match`` applies to the base filename (``foo.gif`` and
|
||||||
|
``bar.gif``).
|
||||||
|
|
||||||
|
``FloatField``
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A floating-point number. Has two **required** arguments:
|
||||||
|
|
||||||
|
====================== ===================================================
|
||||||
|
Argument Description
|
||||||
|
====================== ===================================================
|
||||||
|
``max_digits`` The maximum number of digits allowed in the number.
|
||||||
|
|
||||||
|
``decimal_places`` The number of decimal places to store with the
|
||||||
|
number.
|
||||||
|
====================== ===================================================
|
||||||
|
|
||||||
|
For example, to store numbers up to 999 with a resolution of 2 decimal places,
|
||||||
|
you'd use::
|
||||||
|
|
||||||
|
models.FloatField(..., max_digits=5, decimal_places=2)
|
||||||
|
|
||||||
|
And to store numbers up to approximately one billion with a resolution of 10
|
||||||
|
decimal places::
|
||||||
|
|
||||||
|
models.FloatField(..., max_digits=19, decimal_places=10)
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` (a single-line input).
|
||||||
|
|
||||||
|
``ImageField``
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Like ``FileField``, but validates that the uploaded object is a valid
|
||||||
|
image. Has two extra optional arguments, ``height_field`` and
|
||||||
|
``width_field``, which, if set, will be auto-populated with the height and
|
||||||
|
width of the image each time a model instance is saved.
|
||||||
|
|
||||||
|
Requires the `Python Imaging Library`_.
|
||||||
|
|
||||||
|
.. _Python Imaging Library: http://www.pythonware.com/products/pil/
|
||||||
|
|
||||||
|
``IntegerField``
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
An integer.
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` (a single-line input).
|
||||||
|
|
||||||
|
``IPAddressField``
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
An IP address, in string format (i.e. "24.124.1.30").
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` (a single-line input).
|
||||||
|
|
||||||
|
``NullBooleanField``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Like a ``BooleanField``, but allows ``NULL`` as one of the options. Use this
|
||||||
|
instead of a ``BooleanField`` with ``null=True``.
|
||||||
|
|
||||||
|
The admin represents this as a ``<select>`` box with "Unknown", "Yes" and "No" choices.
|
||||||
|
|
||||||
|
``PhoneNumberField``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A ``CharField`` that checks that the value is a valid U.S.A.-style phone
|
||||||
|
number (in the format ``XXX-XXX-XXXX``).
|
||||||
|
|
||||||
|
``PositiveIntegerField``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Like an ``IntegerField``, but must be positive.
|
||||||
|
|
||||||
|
``PositiveSmallIntegerField``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Like a ``PositiveIntegerField``, but only allows values under a certain
|
||||||
|
(database-dependent) point.
|
||||||
|
|
||||||
|
``SlugField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
"Slug" is a newspaper term. A slug is a short label for something,
|
||||||
|
containing only letters, numbers, underscores or hyphens. They're generally
|
||||||
|
used in URLs.
|
||||||
|
|
||||||
|
In the Django development version, you can specify ``maxlength``. If
|
||||||
|
``maxlength`` is not specified, Django will use a default length of 50. In
|
||||||
|
previous Django versions, there's no way to override the length of 50.
|
||||||
|
|
||||||
|
Implies ``db_index=True``.
|
||||||
|
|
||||||
|
Accepts an extra option, ``prepopulate_from``, which is a list of fields
|
||||||
|
from which to auto-populate the slug, via JavaScript, in the object's admin
|
||||||
|
form::
|
||||||
|
|
||||||
|
models.SlugField(prepopulate_from=("pre_name", "name"))
|
||||||
|
|
||||||
|
``prepopulate_from`` doesn't accept DateTimeFields.
|
||||||
|
|
||||||
|
The admin represents ``SlugField`` as an ``<input type="text">`` (a
|
||||||
|
single-line input).
|
||||||
|
|
||||||
|
``SmallIntegerField``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Like an ``IntegerField``, but only allows values under a certain
|
||||||
|
(database-dependent) point.
|
||||||
|
|
||||||
|
``TextField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A large text field.
|
||||||
|
|
||||||
|
The admin represents this as a ``<textarea>`` (a multi-line input).
|
||||||
|
|
||||||
|
``TimeField``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A time. Accepts the same auto-population options as ``DateField`` and
|
||||||
|
``DateTimeField``.
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` with some
|
||||||
|
JavaScript shortcuts.
|
||||||
|
|
||||||
|
``URLField``
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A field for a URL. If the ``verify_exists`` option is ``True`` (default),
|
||||||
|
the URL given will be checked for existence (i.e., the URL actually loads
|
||||||
|
and doesn't give a 404 response).
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` (a single-line input).
|
||||||
|
|
||||||
|
``USStateField``
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A two-letter U.S. state abbreviation.
|
||||||
|
|
||||||
|
The admin represents this as an ``<input type="text">`` (a single-line input).
|
||||||
|
|
||||||
|
``XMLField``
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A ``TextField`` that checks that the value is valid XML that matches a
|
||||||
|
given schema. Takes one required argument, ``schema_path``, which is the
|
||||||
|
filesystem path to a RelaxNG_ schema against which to validate the field.
|
||||||
|
|
||||||
|
.. _RelaxNG: http://www.relaxng.org/
|
||||||
|
|
||||||
|
Field options
|
||||||
|
-------------
|
||||||
|
|
||||||
The following arguments are available to all field types. All are optional.
|
The following arguments are available to all field types. All are optional.
|
||||||
|
|
||||||
``null``
|
``null``
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
If ``True``, Django will store empty values as ``NULL`` in the database.
|
If ``True``, Django will store empty values as ``NULL`` in the database.
|
||||||
Default is ``False``.
|
Default is ``False``.
|
||||||
|
|
||||||
@ -85,6 +427,8 @@ The following arguments are available to all field types. All are optional.
|
|||||||
string, not ``NULL``.
|
string, not ``NULL``.
|
||||||
|
|
||||||
``blank``
|
``blank``
|
||||||
|
~~~~~~~~~
|
||||||
|
|
||||||
If ``True``, the field is allowed to be blank.
|
If ``True``, the field is allowed to be blank.
|
||||||
|
|
||||||
Note that this is different than ``null``. ``null`` is purely
|
Note that this is different than ``null``. ``null`` is purely
|
||||||
@ -93,6 +437,8 @@ The following arguments are available to all field types. All are optional.
|
|||||||
empty value. If a field has ``blank=False``, the field will be required.
|
empty value. If a field has ``blank=False``, the field will be required.
|
||||||
|
|
||||||
``choices``
|
``choices``
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
A list of 2-tuples to use as choices for this field.
|
A list of 2-tuples to use as choices for this field.
|
||||||
|
|
||||||
If this is given, Django's admin will use a select box instead of the
|
If this is given, Django's admin will use a select box instead of the
|
||||||
@ -130,6 +476,8 @@ The following arguments are available to all field types. All are optional.
|
|||||||
gender = models.CharField(maxlength=1, choices=GENDER_CHOICES)
|
gender = models.CharField(maxlength=1, choices=GENDER_CHOICES)
|
||||||
|
|
||||||
``core``
|
``core``
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
For objects that are edited inline to a related object.
|
For objects that are edited inline to a related object.
|
||||||
|
|
||||||
In the Django admin, if all "core" fields in an inline-edited object are
|
In the Django admin, if all "core" fields in an inline-edited object are
|
||||||
@ -139,6 +487,8 @@ The following arguments are available to all field types. All are optional.
|
|||||||
``core=True`` field.
|
``core=True`` field.
|
||||||
|
|
||||||
``db_column``
|
``db_column``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
The name of the database column to use for this field. If this isn't given,
|
The name of the database column to use for this field. If this isn't given,
|
||||||
Django will use the field's name.
|
Django will use the field's name.
|
||||||
|
|
||||||
@ -148,21 +498,31 @@ The following arguments are available to all field types. All are optional.
|
|||||||
scenes.
|
scenes.
|
||||||
|
|
||||||
``db_index``
|
``db_index``
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
If ``True``, ``django-admin.py sqlindexes`` will output a ``CREATE INDEX``
|
If ``True``, ``django-admin.py sqlindexes`` will output a ``CREATE INDEX``
|
||||||
statement for this field.
|
statement for this field.
|
||||||
|
|
||||||
``default``
|
``default``
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
The default value for the field.
|
The default value for the field.
|
||||||
|
|
||||||
``editable``
|
``editable``
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
If ``False``, the field will not be editable in the admin. Default is ``True``.
|
If ``False``, the field will not be editable in the admin. Default is ``True``.
|
||||||
|
|
||||||
``help_text``
|
``help_text``
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
Extra "help" text to be displayed under the field on the object's admin
|
Extra "help" text to be displayed under the field on the object's admin
|
||||||
form. It's useful for documentation even if your object doesn't have an
|
form. It's useful for documentation even if your object doesn't have an
|
||||||
admin form.
|
admin form.
|
||||||
|
|
||||||
``primary_key``
|
``primary_key``
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
If ``True``, this field is the primary key for the model.
|
If ``True``, this field is the primary key for the model.
|
||||||
|
|
||||||
If you don't specify ``primary_key=True`` for any fields in your model,
|
If you don't specify ``primary_key=True`` for any fields in your model,
|
||||||
@ -177,6 +537,8 @@ The following arguments are available to all field types. All are optional.
|
|||||||
``unique=True``. Only one primary key is allowed on an object.
|
``unique=True``. Only one primary key is allowed on an object.
|
||||||
|
|
||||||
``radio_admin``
|
``radio_admin``
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
By default, Django's admin uses a select-box interface (<select>) for
|
By default, Django's admin uses a select-box interface (<select>) for
|
||||||
fields that are ``ForeignKey`` or have ``choices`` set. If ``radio_admin``
|
fields that are ``ForeignKey`` or have ``choices`` set. If ``radio_admin``
|
||||||
is set to ``True``, Django will use a radio-button interface instead.
|
is set to ``True``, Django will use a radio-button interface instead.
|
||||||
@ -185,11 +547,15 @@ The following arguments are available to all field types. All are optional.
|
|||||||
set.
|
set.
|
||||||
|
|
||||||
``unique``
|
``unique``
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
If ``True``, this field must be unique throughout the table.
|
If ``True``, this field must be unique throughout the table.
|
||||||
|
|
||||||
This is enforced at the database level and at the Django admin-form level.
|
This is enforced at the database level and at the Django admin-form level.
|
||||||
|
|
||||||
``unique_for_date``
|
``unique_for_date``
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Set this to the name of a ``DateField`` or ``DateTimeField`` to require
|
Set this to the name of a ``DateField`` or ``DateTimeField`` to require
|
||||||
that this field be unique for the value of the date field.
|
that this field be unique for the value of the date field.
|
||||||
|
|
||||||
@ -200,13 +566,19 @@ The following arguments are available to all field types. All are optional.
|
|||||||
This is enforced at the Django admin-form level but not at the database level.
|
This is enforced at the Django admin-form level but not at the database level.
|
||||||
|
|
||||||
``unique_for_month``
|
``unique_for_month``
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Like ``unique_for_date``, but requires the field to be unique with respect
|
Like ``unique_for_date``, but requires the field to be unique with respect
|
||||||
to the month.
|
to the month.
|
||||||
|
|
||||||
``unique_for_year``
|
``unique_for_year``
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Like ``unique_for_date`` and ``unique_for_month``.
|
Like ``unique_for_date`` and ``unique_for_month``.
|
||||||
|
|
||||||
``validator_list``
|
``validator_list``
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
A list of extra validators to apply to the field. Each should be a callable
|
A list of extra validators to apply to the field. Each should be a callable
|
||||||
that takes the parameters ``field_data, all_data`` and raises
|
that takes the parameters ``field_data, all_data`` and raises
|
||||||
``django.core.validators.ValidationError`` for errors. (See the
|
``django.core.validators.ValidationError`` for errors. (See the
|
||||||
@ -216,257 +588,31 @@ The following arguments are available to all field types. All are optional.
|
|||||||
|
|
||||||
.. _validator docs: http://www.djangoproject.com/documentation/forms/#validators
|
.. _validator docs: http://www.djangoproject.com/documentation/forms/#validators
|
||||||
|
|
||||||
Field types
|
Verbose field names
|
||||||
-----------
|
-------------------
|
||||||
|
|
||||||
Each field in your model should be an instance of the appropriate ``Field``
|
Each field type, except for ``ForeignKey``, ``ManyToManyField`` and
|
||||||
class. Django uses the field class types to determine a few things:
|
``OneToOneField``, takes an optional first positional argument -- a
|
||||||
|
verbose name. If the verbose name isn't given, Django will automatically create
|
||||||
|
it using the field's attribute name, converting underscores to spaces.
|
||||||
|
|
||||||
* The database column type (e.g. ``INTEGER``, ``VARCHAR``).
|
In this example, the verbose name is ``"Person's first name"``::
|
||||||
* The widget to use in Django's admin (e.g. ``<input type="text">``, ``<select>``).
|
|
||||||
* The minimal validation requirements, used in Django's admin and in manipulators.
|
|
||||||
|
|
||||||
Here are all available field types:
|
first_name = models.CharField("Person's first name", maxlength=30)
|
||||||
|
|
||||||
``AutoField``
|
In this example, the verbose name is ``"first name"``::
|
||||||
An ``IntegerField`` that automatically increments according to available
|
|
||||||
IDs. You usually won't need to use this directly; a primary key field will
|
|
||||||
automatically be added to your model if you don't specify otherwise. (See
|
|
||||||
``primary_key`` in ``General field options`` above.)
|
|
||||||
|
|
||||||
``BooleanField``
|
first_name = models.CharField(maxlength=30)
|
||||||
A true/false field.
|
|
||||||
|
|
||||||
The admin represents this as a checkbox.
|
``ForeignKey``, ``ManyToManyField`` and ``OneToOneField`` require the first
|
||||||
|
argument to be a model class, so use the ``verbose_name`` keyword argument::
|
||||||
|
|
||||||
``CharField``
|
poll = models.ForeignKey(Poll, verbose_name="the related poll")
|
||||||
A string field, for small- to large-sized strings.
|
sites = models.ManyToManyField(Site, verbose_name="list of sites")
|
||||||
|
place = models.OneToOneField(Place, verbose_name="related place")
|
||||||
|
|
||||||
For large amounts of text, use ``TextField``.
|
Convention is not to capitalize the first letter of the ``verbose_name``.
|
||||||
|
Django will automatically capitalize the first letter where it needs to.
|
||||||
The admin represents this as an ``<input type="text">`` (a single-line input).
|
|
||||||
|
|
||||||
``CharField`` has an extra required argument, ``maxlength``, the maximum
|
|
||||||
length (in characters) of the field. The maxlength is enforced at the
|
|
||||||
database level and in Django's validation.
|
|
||||||
|
|
||||||
``CommaSeparatedIntegerField``
|
|
||||||
A field of integers separated by commas. As in ``CharField``, the
|
|
||||||
``maxlength`` argument is required.
|
|
||||||
|
|
||||||
``DateField``
|
|
||||||
A date field. Has a few extra optional arguments:
|
|
||||||
|
|
||||||
====================== ===================================================
|
|
||||||
Argument Description
|
|
||||||
====================== ===================================================
|
|
||||||
``auto_now`` Automatically set the field to now every time the
|
|
||||||
object is saved. Useful for "last-modified"
|
|
||||||
timestamps.
|
|
||||||
|
|
||||||
``auto_now_add`` Automatically set the field to now when the object
|
|
||||||
is first created. Useful for creation of
|
|
||||||
timestamps.
|
|
||||||
====================== ===================================================
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` with a JavaScript
|
|
||||||
calendar and a shortcut for "Today."
|
|
||||||
|
|
||||||
``DateTimeField``
|
|
||||||
A date and time field. Takes the same extra options as ``DateField``.
|
|
||||||
|
|
||||||
The admin represents this as two ``<input type="text">`` fields, with
|
|
||||||
JavaScript shortcuts.
|
|
||||||
|
|
||||||
``EmailField``
|
|
||||||
A ``CharField`` that checks that the value is a valid e-mail address.
|
|
||||||
This doesn't accept ``maxlength``.
|
|
||||||
|
|
||||||
``FileField``
|
|
||||||
A file-upload field.
|
|
||||||
|
|
||||||
Has an extra required argument, ``upload_to``, a local filesystem path to
|
|
||||||
which files should be upload. This path may contain `strftime formatting`_,
|
|
||||||
which will be replaced by the date/time of the file upload (so that
|
|
||||||
uploaded files don't fill up the given directory).
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="file">`` (a file-upload widget).
|
|
||||||
|
|
||||||
Using a ``FileField`` or an ``ImageField`` (see below) in a model takes a few
|
|
||||||
steps:
|
|
||||||
|
|
||||||
1. In your settings file, you'll need to define ``MEDIA_ROOT`` as the
|
|
||||||
full path to a directory where you'd like Django to store uploaded
|
|
||||||
files. (For performance, these files are not stored in the database.)
|
|
||||||
Define ``MEDIA_URL`` as the base public URL of that directory. Make
|
|
||||||
sure that this directory is writable by the Web server's user
|
|
||||||
account.
|
|
||||||
|
|
||||||
2. Add the ``FileField`` or ``ImageField`` to your model, making sure
|
|
||||||
to define the ``upload_to`` option to tell Django to which
|
|
||||||
subdirectory of ``MEDIA_ROOT`` it should upload files.
|
|
||||||
|
|
||||||
3. All that will be stored in your database is a path to the file
|
|
||||||
(relative to ``MEDIA_ROOT``). You'll must likely want to use the
|
|
||||||
convenience ``get_<fieldname>_url`` function provided by Django. For
|
|
||||||
example, if your ``ImageField`` is called ``mug_shot``, you can get
|
|
||||||
the absolute URL to your image in a template with ``{{
|
|
||||||
object.get_mug_shot_url }}``.
|
|
||||||
|
|
||||||
.. _`strftime formatting`: http://docs.python.org/lib/module-time.html#l2h-1941
|
|
||||||
|
|
||||||
``FilePathField``
|
|
||||||
A field whose choices are limited to the filenames in a certain directory
|
|
||||||
on the filesystem. Has three special arguments, of which the first is
|
|
||||||
required:
|
|
||||||
|
|
||||||
====================== ===================================================
|
|
||||||
Argument Description
|
|
||||||
====================== ===================================================
|
|
||||||
``path`` Required. The absolute filesystem path to a
|
|
||||||
directory from which this ``FilePathField`` should
|
|
||||||
get its choices. Example: ``"/home/images"``.
|
|
||||||
|
|
||||||
``match`` Optional. A regular expression, as a string, that
|
|
||||||
``FilePathField`` will use to filter filenames.
|
|
||||||
Note that the regex will be applied to the
|
|
||||||
base filename, not the full path. Example:
|
|
||||||
``"foo.*\.txt^"``, which will match a file called
|
|
||||||
``foo23.txt`` but not ``bar.txt`` or ``foo23.gif``.
|
|
||||||
|
|
||||||
``recursive`` Optional. Either ``True`` or ``False``. Default is
|
|
||||||
``False``. Specifies whether all subdirectories of
|
|
||||||
``path`` should be included.
|
|
||||||
====================== ===================================================
|
|
||||||
|
|
||||||
Of course, these arguments can be used together.
|
|
||||||
|
|
||||||
The one potential gotcha is that ``match`` applies to the base filename,
|
|
||||||
not the full path. So, this example::
|
|
||||||
|
|
||||||
FilePathField(path="/home/images", match="foo.*", recursive=True)
|
|
||||||
|
|
||||||
...will match ``/home/images/foo.gif`` but not ``/home/images/foo/bar.gif``
|
|
||||||
because the ``match`` applies to the base filename (``foo.gif`` and
|
|
||||||
``bar.gif``).
|
|
||||||
|
|
||||||
``FloatField``
|
|
||||||
A floating-point number. Has two **required** arguments:
|
|
||||||
|
|
||||||
====================== ===================================================
|
|
||||||
Argument Description
|
|
||||||
====================== ===================================================
|
|
||||||
``max_digits`` The maximum number of digits allowed in the number.
|
|
||||||
|
|
||||||
``decimal_places`` The number of decimal places to store with the
|
|
||||||
number.
|
|
||||||
====================== ===================================================
|
|
||||||
|
|
||||||
For example, to store numbers up to 999 with a resolution of 2 decimal places,
|
|
||||||
you'd use::
|
|
||||||
|
|
||||||
models.FloatField(..., max_digits=5, decimal_places=2)
|
|
||||||
|
|
||||||
And to store numbers up to approximately one billion with a resolution of 10
|
|
||||||
decimal places::
|
|
||||||
|
|
||||||
models.FloatField(..., max_digits=19, decimal_places=10)
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` (a single-line input).
|
|
||||||
|
|
||||||
``ImageField``
|
|
||||||
Like ``FileField``, but validates that the uploaded object is a valid
|
|
||||||
image. Has two extra optional arguments, ``height_field`` and
|
|
||||||
``width_field``, which, if set, will be auto-populated with the height and
|
|
||||||
width of the image each time a model instance is saved.
|
|
||||||
|
|
||||||
Requires the `Python Imaging Library`_.
|
|
||||||
|
|
||||||
.. _Python Imaging Library: http://www.pythonware.com/products/pil/
|
|
||||||
|
|
||||||
``IntegerField``
|
|
||||||
An integer.
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` (a single-line input).
|
|
||||||
|
|
||||||
``IPAddressField``
|
|
||||||
An IP address, in string format (i.e. "24.124.1.30").
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` (a single-line input).
|
|
||||||
|
|
||||||
``NullBooleanField``
|
|
||||||
Like a ``BooleanField``, but allows ``NULL`` as one of the options. Use this
|
|
||||||
instead of a ``BooleanField`` with ``null=True``.
|
|
||||||
|
|
||||||
The admin represents this as a ``<select>`` box with "Unknown", "Yes" and "No" choices.
|
|
||||||
|
|
||||||
``PhoneNumberField``
|
|
||||||
A ``CharField`` that checks that the value is a valid U.S.A.-style phone
|
|
||||||
number (in the format ``XXX-XXX-XXXX``).
|
|
||||||
|
|
||||||
``PositiveIntegerField``
|
|
||||||
Like an ``IntegerField``, but must be positive.
|
|
||||||
|
|
||||||
``PositiveSmallIntegerField``
|
|
||||||
Like a ``PositiveIntegerField``, but only allows values under a certain
|
|
||||||
(database-dependent) point.
|
|
||||||
|
|
||||||
``SlugField``
|
|
||||||
"Slug" is a newspaper term. A slug is a short label for something,
|
|
||||||
containing only letters, numbers, underscores or hyphens. They're generally
|
|
||||||
used in URLs.
|
|
||||||
|
|
||||||
In the Django development version, you can specify ``maxlength``. If
|
|
||||||
``maxlength`` is not specified, Django will use a default length of 50. In
|
|
||||||
previous Django versions, there's no way to override the length of 50.
|
|
||||||
|
|
||||||
Implies ``db_index=True``.
|
|
||||||
|
|
||||||
Accepts an extra option, ``prepopulate_from``, which is a list of fields
|
|
||||||
from which to auto-populate the slug, via JavaScript, in the object's admin
|
|
||||||
form::
|
|
||||||
|
|
||||||
models.SlugField(prepopulate_from=("pre_name", "name"))
|
|
||||||
|
|
||||||
``prepopulate_from`` doesn't accept DateTimeFields.
|
|
||||||
|
|
||||||
The admin represents ``SlugField`` as an ``<input type="text">`` (a
|
|
||||||
single-line input).
|
|
||||||
|
|
||||||
``SmallIntegerField``
|
|
||||||
Like an ``IntegerField``, but only allows values under a certain
|
|
||||||
(database-dependent) point.
|
|
||||||
|
|
||||||
``TextField``
|
|
||||||
A large text field.
|
|
||||||
|
|
||||||
The admin represents this as a ``<textarea>`` (a multi-line input).
|
|
||||||
|
|
||||||
``TimeField``
|
|
||||||
A time. Accepts the same auto-population options as ``DateField`` and
|
|
||||||
``DateTimeField``.
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` with some
|
|
||||||
JavaScript shortcuts.
|
|
||||||
|
|
||||||
``URLField``
|
|
||||||
A field for a URL. If the ``verify_exists`` option is ``True`` (default),
|
|
||||||
the URL given will be checked for existence (i.e., the URL actually loads
|
|
||||||
and doesn't give a 404 response).
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` (a single-line input).
|
|
||||||
|
|
||||||
``USStateField``
|
|
||||||
A two-letter U.S. state abbreviation.
|
|
||||||
|
|
||||||
The admin represents this as an ``<input type="text">`` (a single-line input).
|
|
||||||
|
|
||||||
``XMLField``
|
|
||||||
A ``TextField`` that checks that the value is valid XML that matches a
|
|
||||||
given schema. Takes one required argument, ``schema_path``, which is the
|
|
||||||
filesystem path to a RelaxNG_ schema against which to validate the field.
|
|
||||||
|
|
||||||
.. _RelaxNG: http://www.relaxng.org/
|
|
||||||
|
|
||||||
Relationships
|
Relationships
|
||||||
-------------
|
-------------
|
||||||
@ -496,7 +642,7 @@ following definitions::
|
|||||||
city = models.ForeignKey(City)
|
city = models.ForeignKey(City)
|
||||||
|
|
||||||
To create a recursive relationship -- an object that has a many-to-one
|
To create a recursive relationship -- an object that has a many-to-one
|
||||||
relationship with itself -- use ``models.ForeignKey("self")``.
|
relationship with itself -- use ``models.ForeignKey('self')``.
|
||||||
|
|
||||||
If you need to create a relationship on a model that has not yet been defined,
|
If you need to create a relationship on a model that has not yet been defined,
|
||||||
you can use the name of the model, rather than the model object itself::
|
you can use the name of the model, rather than the model object itself::
|
||||||
@ -749,20 +895,22 @@ See the `One-to-one relationship model example`_ for a full example.
|
|||||||
Meta options
|
Meta options
|
||||||
============
|
============
|
||||||
|
|
||||||
Give your model metadata by using an inner ``"class Meta"``, like so::
|
Give your model metadata by using an inner ``class Meta``, like so::
|
||||||
|
|
||||||
class Foo(models.Model):
|
class Foo(models.Model):
|
||||||
bar = models.CharField(maxlength=30)
|
bar = models.CharField(maxlength=30)
|
||||||
# ...
|
|
||||||
class Meta:
|
class Meta:
|
||||||
# ...
|
# ...
|
||||||
|
|
||||||
Model metadata is "anything that's not a field" -- ordering options, etc.
|
Model metadata is "anything that's not a field", such as ordering options, etc.
|
||||||
|
|
||||||
Here's a list of all possible ``Meta`` options. No options are required. Adding
|
Here's a list of all possible ``Meta`` options. No options are required. Adding
|
||||||
``class Meta`` to a model is completely optional.
|
``class Meta`` to a model is completely optional.
|
||||||
|
|
||||||
``db_table``
|
``db_table``
|
||||||
|
------------
|
||||||
|
|
||||||
The name of the database table to use for the module::
|
The name of the database table to use for the module::
|
||||||
|
|
||||||
db_table = "pizza_orders"
|
db_table = "pizza_orders"
|
||||||
@ -774,6 +922,8 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
that's OK. Django quotes column and table names behind the scenes.
|
that's OK. Django quotes column and table names behind the scenes.
|
||||||
|
|
||||||
``get_latest_by``
|
``get_latest_by``
|
||||||
|
-----------------
|
||||||
|
|
||||||
The name of a ``DateField`` or ``DateTimeField``. If given, the module will
|
The name of a ``DateField`` or ``DateTimeField``. If given, the module will
|
||||||
have a ``get_latest()`` function that fetches the "latest" object according
|
have a ``get_latest()`` function that fetches the "latest" object according
|
||||||
to that field::
|
to that field::
|
||||||
@ -784,14 +934,9 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
|
|
||||||
.. _Getting the "latest" object: http://www.djangoproject.com/documentation/models/get_latest/
|
.. _Getting the "latest" object: http://www.djangoproject.com/documentation/models/get_latest/
|
||||||
|
|
||||||
``module_name``
|
|
||||||
The name of the module::
|
|
||||||
|
|
||||||
module_name = "pizza_orders"
|
|
||||||
|
|
||||||
If this isn't given, Django will use a lowercase version of the class name.
|
|
||||||
|
|
||||||
``order_with_respect_to``
|
``order_with_respect_to``
|
||||||
|
-------------------------
|
||||||
|
|
||||||
Marks this object as "orderable" with respect to the given field. This is
|
Marks this object as "orderable" with respect to the given field. This is
|
||||||
almost always used with related objects to allow them to be ordered with
|
almost always used with related objects to allow them to be ordered with
|
||||||
respect to a parent object. For example, if a ``PizzaToppping`` relates to
|
respect to a parent object. For example, if a ``PizzaToppping`` relates to
|
||||||
@ -799,9 +944,11 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
|
|
||||||
order_with_respect_to = 'pizza'
|
order_with_respect_to = 'pizza'
|
||||||
|
|
||||||
to allow the toppings to be ordered with respect to the associated pizza.
|
...to allow the toppings to be ordered with respect to the associated pizza.
|
||||||
|
|
||||||
``ordering``
|
``ordering``
|
||||||
|
------------
|
||||||
|
|
||||||
The default ordering for the object, for use when obtaining lists of objects::
|
The default ordering for the object, for use when obtaining lists of objects::
|
||||||
|
|
||||||
ordering = ['-order_date']
|
ordering = ['-order_date']
|
||||||
@ -830,6 +977,8 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
.. _Specifying ordering: http://www.djangoproject.com/documentation/models/ordering/
|
.. _Specifying ordering: http://www.djangoproject.com/documentation/models/ordering/
|
||||||
|
|
||||||
``permissions``
|
``permissions``
|
||||||
|
---------------
|
||||||
|
|
||||||
Extra permissions to enter into the permissions table when creating this
|
Extra permissions to enter into the permissions table when creating this
|
||||||
object. Add, delete and change permissions are automatically created for
|
object. Add, delete and change permissions are automatically created for
|
||||||
each object that has ``admin`` set. This example specifies an extra
|
each object that has ``admin`` set. This example specifies an extra
|
||||||
@ -841,6 +990,8 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
``(permission_code, human_readable_permission_name)``.
|
``(permission_code, human_readable_permission_name)``.
|
||||||
|
|
||||||
``unique_together``
|
``unique_together``
|
||||||
|
-------------------
|
||||||
|
|
||||||
Sets of field names that, taken together, must be unique::
|
Sets of field names that, taken together, must be unique::
|
||||||
|
|
||||||
unique_together = (("driver", "restaurant"),)
|
unique_together = (("driver", "restaurant"),)
|
||||||
@ -851,6 +1002,8 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
``CREATE TABLE`` statement).
|
``CREATE TABLE`` statement).
|
||||||
|
|
||||||
``verbose_name``
|
``verbose_name``
|
||||||
|
----------------
|
||||||
|
|
||||||
A human-readable name for the object, singular::
|
A human-readable name for the object, singular::
|
||||||
|
|
||||||
verbose_name = "pizza"
|
verbose_name = "pizza"
|
||||||
@ -859,12 +1012,29 @@ Here's a list of all possible ``Meta`` options. No options are required. Adding
|
|||||||
``CamelCase`` becomes ``camel case``.
|
``CamelCase`` becomes ``camel case``.
|
||||||
|
|
||||||
``verbose_name_plural``
|
``verbose_name_plural``
|
||||||
|
-----------------------
|
||||||
|
|
||||||
The plural name for the object::
|
The plural name for the object::
|
||||||
|
|
||||||
verbose_name_plural = "stories"
|
verbose_name_plural = "stories"
|
||||||
|
|
||||||
If this isn't given, Django will use ``verbose_name + "s"``.
|
If this isn't given, Django will use ``verbose_name + "s"``.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
========================================
|
||||||
|
THE REST OF THIS HAS NOT YET BEEN EDITED
|
||||||
|
========================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Table names
|
||||||
|
===========
|
||||||
|
|
||||||
|
Automatic primary key fields
|
||||||
|
============================
|
||||||
|
|
||||||
|
|
||||||
Admin options
|
Admin options
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user