Gibt es eine Möglichkeit, einige Felder in Django als einzigartig zu definieren?
Ich habe eine Tabelle mit Bänden (von Zeitschriften) und möchte nicht mehr als eine Bandnummer für dieselbe Zeitschrift.
class Volume(models.Model):
id = models.AutoField(primary_key=True)
journal_id = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
volume_number = models.CharField('Volume Number', max_length=100)
comments = models.TextField('Comments', max_length=4000, blank=True)
Ich habe versucht zu setzen unique = True
als Attribut in den Feldern journal_id
und , volume_number
aber es funktioniert nicht.
python
django
django-models
Giovanni Di Milia
quelle
quelle
UNIQUE
Einschränkung doppelte Nichtwerte nichtNULL
zulassen, jedoch mehrereNULL
Werte zulassen (siehe Entwurf wiscorp.com/sql_2003_standard.zip , Framework, S. 22). Wenn Sie möchten, dass Ihre eindeutige Einschränkung mehrere Nullwerte nicht zulässt, machen Sie wahrscheinlich etwas falsch, z. B. die VerwendungNULL
als aussagekräftigen Wert. Denken Sie daran, dass im nullbaren Feld "Wir haben nicht immer einen Wert für dieses Feld, aber wenn wir dies tun, muss es eindeutig sein."unique_together
Einschränkungen? Zum Beispiel - wenn ich möchte, dass Modusspalten im Bereich des übergeordneten Elements eindeutig sind? Nun, diese Eigenschaft ist eigentlich ein Tupel selbst, siehe: docs.djangoproject.com/de/1.4/ref/models/options/… Ihre Einschränkung sollte also expliziter geschrieben werden als :unique_together = (('journal_id', 'volume_number',),)
.Django 2.2+
Die Verwendung der
constraints
FunktionenUniqueConstraint
wird gegenüber unique_together bevorzugt .Aus der Django-Dokumentation für
unique_together
:Zum Beispiel:
quelle
UniqueConstraint
aber ich werde komisch,psycopg2.errors.DuplicateTable: relation "name_of_the_constraint" already exists
wenn ich zu Postgres