---
title: "Mixins för enskilda objekt"
version: 5.2
locale: sv
source: https://docs.djangoproject.com/sv/5.2/ref/class-based-views/mixins-single-object/
canonical: https://djangodocs.dev/sv/5.2/ref/class-based-views/mixins-single-object/
---
# Mixins för enskilda objekt

## `SingleObjectMixin`

#### `class django.views.generic.detail.SingleObjectMixin`

Tillhandahåller en mekanism för att leta upp ett objekt som är associerat med den aktuella HTTP-begäran.

**Metoder och egenskaper**

#### `model`

Den modell som denna vy ska visa data för. Att ange `model = Foo` är i praktiken detsamma som att ange `queryset = Foo.objects.all()`, där `objects` står för `Foo` default manager \<default-managers\>\`.

#### `queryset`

En `QuerySet` som representerar objekten. Om det anges ersätter värdet för `queryset` det värde som anges för [`model`](#django.views.generic.detail.SingleObjectMixin.model).

> **Warning**
>
> `queryset` är ett klassattribut med ett *mutabelt* värde så försiktighet måste iakttas när det används direkt. Innan du använder det, anropa antingen dess [`all()`](/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.all)-metod eller hämta det med [`get_queryset()`](#django.views.generic.detail.SingleObjectMixin.get_queryset) som tar hand om kloningen bakom kulisserna.

#### `slug_field`

Namnet på det fält i modellen som innehåller sluggen. Som standard är `slug_field` `'slug'`.

#### `slug_url_kwarg`

Namnet på URLConf-nyckelordsargumentet som innehåller sluggen. Som standard är `slug_url_kwarg` `'slug'`.

#### `pk_url_kwarg`

Namnet på URLConf-nyckelordsargumentet som innehåller den primära nyckeln. Som standard är `pk_url_kwarg` `'pk`.

#### `context_object_name`

Anger namnet på den variabel som ska användas i sammanhanget.

#### `query_pk_and_slug`

Om `True`, får [`get_object()`](#django.views.generic.detail.SingleObjectMixin.get_object) att utföra sin sökning med hjälp av både primärnyckeln och sluggen. Standardvärdet är `False`.

Detta attribut kan bidra till att mildra attacker med ”osäker direkt objektreferens”. När applikationer ger åtkomst till enskilda objekt med en sekventiell primärnyckel kan en angripare med brutalt våld gissa sig till alla URL:er och därigenom få en lista över alla objekt i applikationen. Om användare med åtkomst till enskilda objekt ska hindras från att få fram den här listan, kan inställningen `query_pk_and_slug` till `True` hjälpa till att förhindra gissning av webbadresser eftersom varje webbadress kräver två korrekta, icke sekventiella argument. Att använda en unik slug kan tjäna samma syfte, men det här schemat tillåter dig att ha icke-unika slugs.

#### `get_object(queryset=None)`

Returnerar det enskilda objekt som denna vy kommer att visa. Om `queryset` anges kommer denna queryset att användas som källa för objekten; annars kommer [`get_queryset()`](#django.views.generic.detail.SingleObjectMixin.get_queryset) att användas. `get_object()` letar efter ett [`pk_url_kwarg`](#django.views.generic.detail.SingleObjectMixin.pk_url_kwarg)-argument i argumenten till vyn; om detta argument hittas utför denna metod en primärnyckelbaserad sökning med hjälp av detta värde. Om detta argument inte hittas letar den efter ett [`slug_url_kwarg`](#django.views.generic.detail.SingleObjectMixin.slug_url_kwarg)-argument och utför en slug-uppslagning med hjälp av [`slug_field`](#django.views.generic.detail.SingleObjectMixin.slug_field).

När [`query_pk_and_slug`](#django.views.generic.detail.SingleObjectMixin.query_pk_and_slug) är `True` kommer `get_object()` att utföra sin sökning med hjälp av både primärnyckeln och sluggen.

#### `get_queryset()`

Returnerar den queryset som kommer att användas för att hämta objektet som denna vy kommer att visa. Som standard returnerar [`get_queryset()`](#django.views.generic.detail.SingleObjectMixin.get_queryset) värdet på attributet [`queryset`](#django.views.generic.detail.SingleObjectMixin.queryset) om det är inställt, annars konstruerar det en [`QuerySet`](/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet) genom att anropa metoden `all()` på attributet [`model`](#django.views.generic.detail.SingleObjectMixin.model) standardhanterare.

#### `get_context_object_name(obj)`

Returnerar det kontextvariabelnamn som kommer att användas för att innehålla de data som denna vy manipulerar. Om [`context_object_name`](#django.views.generic.detail.SingleObjectMixin.context_object_name) inte anges kommer kontextnamnet att konstrueras från `model_name` för den modell som frågeuppsättningen är sammansatt av. Till exempel: skulle modellen `Article` ha ett kontextobjekt med namnet `'article'`.

#### `get_context_data(**kwargs)`

Returnerar kontextdata för visning av objektet.

Basimplementeringen av denna metod kräver att attributet `self.object` ställs in av vyn (även om det är `None`). Var noga med att göra detta om du använder denna mixin utan en av de inbyggda vyerna som gör det.

Den returnerar en ordbok med detta innehåll:

- `object`: Det objekt som denna vy visar (`self.object`).
- `context_object_name`: `self.object` kommer också att lagras under det namn som returneras av [`get_context_object_name()`](#django.views.generic.detail.SingleObjectMixin.get_context_object_name), vilket som standard är den gemena versionen av modellnamnet.

> **Kontextvariabler åsidosätter värden från mallens kontextprocessorer**
>
> Alla variabler från [`get_context_data()`](#django.views.generic.detail.SingleObjectMixin.get_context_data) har företräde framför kontextvariabler från [context processors](/sv/5.2/ref/templates/api/#subclassing-context-requestcontext). Om din vy till exempel anger attributet [`model`](#django.views.generic.detail.SingleObjectMixin.model) till [`User`](/sv/5.2/ref/contrib/auth/#django.contrib.auth.models.User), kommer standardkontextobjektnamnet `user` att åsidosätta variabeln `user` från kontextprocessorn [`django.contrib.auth.context_processors.auth()`](/sv/5.2/ref/templates/api/#django.contrib.auth.context_processors.auth). Använd [`get_context_object_name()`](#django.views.generic.detail.SingleObjectMixin.get_context_object_name) för att undvika en krock.

#### `get_slug_field()`

Returnerar namnet på ett slug-fält som ska användas för att söka efter slug. Som standard returneras värdet för [`slug_field`](#django.views.generic.detail.SingleObjectMixin.slug_field).

## `SingleObjectTemplateResponseMixin`

#### `class django.views.generic.detail.SingleObjectTemplateResponseMixin`

En mixin-klass som utför mallbaserad svarsrendering för vyer som arbetar med en enda objektinstans. Kräver att vyn som den blandas med tillhandahåller `self.object`, den objektinstans som vyn arbetar med. `self.object` kommer vanligtvis att vara, men behöver inte vara, en instans av en Django-modell. Det kan vara `None` om vyn håller på att konstruera en ny instans.

**Förlänger**

- [`TemplateResponseMixin`](/sv/5.2/ref/class-based-views/mixins-simple/#django.views.generic.base.TemplateResponseMixin)

**Metoder och egenskaper**

#### `template_name_field`

Det fält i den aktuella objektinstansen som kan användas för att bestämma namnet på en kandidatmall. Om antingen `template_name_field` självt eller värdet på `template_name_field` på den aktuella objektinstansen är `None`, kommer objektet inte att användas för ett kandidatmallnamn.

#### `template_name_suffix`

Suffixet som ska läggas till det autogenererade kandidatmallnamnet. Standardsuffixet är `_detail`.

#### `get_template_names()`

Returnerar en lista med kandidatmallnamn. Returnerar en lista som innehåller `template_name`, om värdet är inställt på det. Annars returneras en lista som innehåller:

- innehållet i fältet `template_name_field` i den objektinstans som vyn arbetar med (om tillgängligt)
- `<app_label>/<modell_namn><template_namn_suffix>.html`
