The Model._meta API is the core of the Django Orm, which allows lookups, queries, forms, and admin modules to understand each model by using the _meta properties of each model class.
1. field Access API, retrieving a model's field instance using the name
Options.get_field (Field_name)
Returns a field instance based on the given field_name. Field_name can be a field in the model, an abstract or inherited model field, or a field on another model of a model, in which case the field_name is a user-defined Related_ Name or Django Auto-generated names.
Note: Hidden fields cannot be retrieved by name. If the given field name is not found, a fielddoesnotexist error is thrown.
- >>> from django.contrib.auth.models import User
- # A Field on the model
- >>> User._meta.get_field (' username ')
- <django.db.models.fields.CharField:username>
- # A field from another model that have A relation with the current model
- >>> User._meta.get_field (' logentry ')
- <ManyToOneRel:admin.logentry>
- # A Non existent field
- >>> User._meta.get_field (' does_not_exist ')
- Traceback (most recent):
- ...
- Fielddoesnotexist:user has no field named ' Does_not_exist '
2. Retrieving all field instances of a model
Options.get_fields (Include_parents=true, Include_hidden=false)
Returns all related fields of a model in the form of a tuple. Get_fields receives two parameters to control which fields are returned.
- >>> from django.contrib.auth.models import User
- >>> user._meta.get_fields ()
- (<manytoonerel:admin.logentry>,
- <django.db.models.fields.autofield:id>,
- <django.db.models.fields.charfield:password>,
- <django.db.models.fields.datetimefield:last_login>,
- <django.db.models.fields.booleanfield:is_superuser>,
- <django.db.models.fields.charfield:username>,
- <django.db.models.fields.charfield:first_name>,
- <django.db.models.fields.charfield:last_name>,
- <django.db.models.fields.emailfield:email>,
- <django.db.models.fields.booleanfield:is_staff>,
- <django.db.models.fields.booleanfield:is_active>,
- <django.db.models.fields.datetimefield:date_joined>,
- <django.db.models.fields.related.manytomanyfield:groups>,
- <django.db.models.fields.related.ManyToManyField:user_permissions>)
Original link: https://docs.djangoproject.com/en/2.0/ref/models/meta/
Django Model._meta API