5

Voglio disabilitare la creazione automatica dell'ID in Django Models. È possibile farlo? Come?Come disabilitare la creazione automatica dell'ID in Django?

+0

Dichiarare una chiave primaria sul modello (https://docs.djangoproject.com/en/1.8/ref/models/fields/#primary-key). I modelli senza ID non sono supportati (AFAIK) – Roba

+0

Sì, è possibile. Ma cosa succede se voglio solo memorizzare un elemento simile a un utente per un oggetto? Non ho bisogno di id per quella roba. –

risposta

2

Come indicato nella risposta, è necessario dichiarare una chiave primaria su un campo non automatico. Per esempio:

from django.db import models 

class Person(models.Model): 
    username = CharField(primary_key=True, max_length=100) 
    first_name = CharField(null=True, blank=True, max_length=100) 

Si prega di notare, l'impostazione di un campo per primary_key=True rende automaticamente unico e non nullo. In bocca al lupo!

+0

Sì, è possibile. Ma cosa succede se voglio solo memorizzare un elemento simile a un utente per un oggetto? Non ho bisogno di id per quella roba. –

+0

Esatto, potresti avere casi d'uso in cui nelle tabelle del tuo database non andresti con la 3a forma di normalizzazione, ma se hai bisogno che quelle tabelle vengano esposte in Django come modelli, devi farlo. C'è poca o nessuna perdita da parte tua, questi campi possono essere gestiti automaticamente e difficilmente sostieni lo spazio utilizzato ... – Roba

+0

Non è nemmeno realmente esposto a te come programmatore a meno che non lo visualizzi nel database, e minuscolo overhead per un sacco di affidabilità. Avere una chiave unica garantita in un DB mi ha salvato il culo negli anni più volte di quanto possa contare. – FlipperPA