Voglio disabilitare la creazione automatica dell'ID in Django Models. È possibile farlo? Come?Come disabilitare la creazione automatica dell'ID in Django?
risposta
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!
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. –
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
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
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
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. –