5

Ich möchte automatische ID-Erstellung in Django-Modelle deaktivieren. Ist es möglich? Wie?Wie kann ich die automatische ID-Erstellung in Django deaktivieren?

+0

Deklarieren Sie einen Primärschlüssel für Ihr Modell (https://docs.djangoproject.com/en/1.8/ref/models/fields/#primary-key). Modelle ohne IDs werden nicht unterstützt (AFAIK) – Roba

+0

Ja, das ist möglich. Aber was ist, wenn ich nur die Art eines Benutzers für einen Artikel speichern möchte? Ich brauche keine ID für dieses Zeug. –

Antwort

2

Wie in der Antwort erwähnt, müssen Sie einen Primärschlüssel auf einem Nicht-AutoField deklarieren. Zum Beispiel:

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) 

Bitte beachten Sie, dass ein Feld primary_key=True Einstellung automatisch macht es einzigartig und nicht null. Viel Glück!

+0

Ja, das ist möglich. Aber was ist, wenn ich nur die Art eines Benutzers für einen Artikel speichern möchte? Ich brauche keine ID für dieses Zeug. –

+0

Richtig, Sie haben vielleicht Anwendungsfälle, in denen Sie in Ihren Datenbanktabellen nicht mit der dritten Normalisierungsform arbeiten würden, aber wenn Sie diese Tabellen in Django als Modelle verfügbar machen wollen, müssen Sie das tun. Es gibt wenig/keinen Verlust von Ihrer Seite, diese Felder können automatisch verwaltet werden und Sie würden sich kaum über den verwendeten Speicherplatz streiten ... – Roba

+0

Es ist Ihnen nicht einmal wirklich als Coder ausgesetzt, es sei denn, Sie sehen es in der Datenbank an. und minimaler Overhead für eine hohe Zuverlässigkeit. Einen garantierten eindeutigen Schlüssel in einer DB zu haben hat meinen Hintern über die Jahre öfter gerettet, als ich zählen kann. – FlipperPA