---
title: "Modell _meta API"
version: 5.2
locale: sv
source: https://docs.djangoproject.com/sv/5.2/ref/models/meta/
canonical: https://djangodocs.dev/sv/5.2/ref/models/meta/
---
# Modell `_meta` API

#### `class Options`

Modellens API `_meta` är kärnan i Django ORM. Det gör det möjligt för andra delar av systemet som uppslagningar, frågor, formulär och administratören att förstå kapaciteten hos varje modell. API:et är tillgängligt via attributet `_meta` i varje modellklass, som är en instans av ett `django.db.models.options.Options`-objekt.

Metoder och attribut som den tillhandahåller kan användas för att:

- Hämta alla fältinstanser för en modell
- Hämta en instans med ett enda fält i en modell med namn
- Hämta alla fält som utgör primärnyckeln i en modell

## API för fältåtkomst

### Hämta en instans med ett enda fält i en modell med namn

#### `Options.get_field(field_name)`

Returnerar fältinstansen när ett namn på ett fält anges.

`field_name` kan vara namnet på ett fält i modellen, ett fält i en abstrakt eller ärvd modell, eller ett fält som definieras i en annan modell som pekar på modellen. I det senare fallet kommer `field_name` att vara (i prioritetsordning) det [`related_query_name`](/sv/5.2/ref/models/fields/#django.db.models.ForeignKey.related_query_name) som användaren har angett, det [`related_name`](/sv/5.2/ref/models/fields/#django.db.models.ForeignKey.related_name) som användaren har angett eller det namn som Django automatiskt genererar.

[`Dolda fält`](/sv/5.2/ref/models/fields/#django.db.models.Field.hidden) kan inte hämtas med namn.

Om ett fält med det angivna namnet inte hittas kommer ett [`FieldDoesNotExist`](/sv/5.2/ref/exceptions/#django.core.exceptions.FieldDoesNotExist) undantag att uppstå.

```pycon
>>> 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 has 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 call last):
    ...
FieldDoesNotExist: User has no field named 'does_not_exist'
```

### Hämtar alla fältinstanser av en modell

#### `Options.get_fields(include_parents=True, include_hidden=False)`

Returnerar en tupel av fält som är associerade med en modell. `get_fields()` accepterar två parametrar som kan användas för att styra vilka fält som returneras:

**`inkludera_föräldrar`**

  `True` som standard. Inkluderar rekursivt fält som definierats i överordnade klasser. Om inställningen är `False` kommer `get_fields()` endast att söka efter fält som deklarerats direkt i den aktuella modellen. Fält från modeller som direkt ärver från abstrakta modeller eller proxyklasser anses vara lokala, inte i den överordnade klassen.

**`include_hidden`**

  `False` som standard. Om inställningen är `True` kommer `get_fields()` att inkludera [`hidden fields`](/sv/5.2/ref/models/fields/#django.db.models.Field.hidden).

```pycon
>>> 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>)

# Also include hidden fields.
>>> User._meta.get_fields(include_hidden=True)
(<ManyToOneRel: auth.user_groups>,
 <ManyToOneRel: auth.user_user_permissions>,
 <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>)
```

### Hämta fält som utgör primärnyckeln i en modell

> **New in Django 5.2**

#### `Options.pk_fields`

Returnerar en lista över de fält som utgör primärnyckeln i en modell.

När en [`composite primary key`](/sv/5.2/ref/models/fields/#django.db.models.CompositePrimaryKey) definieras på en modell kommer den att innehålla alla [`fields`](/sv/5.2/ref/models/fields/#django.db.models.Field) som den refererar till.

```python
from django.db import models

class TenantUser(models.Model):
    pk = models.CompositePrimaryKey("tenant_id", "id")
    tenant_id = models.IntegerField()
    id = models.IntegerField()
```

```pycon
>>> TenantUser._meta.pk_fields
[
    <django.db.models.fields.IntegerField: tenant_id>,
    <django.db.models.fields.IntegerField: id>
]
```

Annars kommer det att innehålla det enda fält som deklarerats som [`primary key`](/sv/5.2/ref/models/fields/#django.db.models.Field.primary_key) i modellen.

```pycon
>>> User._meta.pk_fields
[<django.db.models.fields.AutoField: id>]
```
