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?
Antwort
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!
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. –
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
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
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
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. –