In meinem Django-Modell sollte nur ein Wert der Hauptwert sein, während der Rest optional ist.Wie kann nur einer Zeile ein bestimmter Feldwert zugewiesen werden?
In meinem Modell:
@with_author
class BOMVersion(models.Model):
name = models.CharField(max_length=200,null=True, blank=True)
description = models.TextField(null=True, blank=True)
tomaterial = models.ForeignKey(Material, related_name = 'tomaterial')
status = models.CharField(max_length=1, choices=STATUS_CHOICES)
BOM_CHOICES = (
('M','Main'),
('A','Additional'),
)
Ich soll so dieses Modell mit Daten füllen kann, dass nur eine der Zeilen status
den Wert Haupt haben, während der Rest immer Zusätzliche seine . (Es ist völlig die Radio-Button-Funktionalität, wenn nur Wert gewählt werden.)
Zum Beispiel:
1 v1 ...A
2 v2 ...M
3 v3 ...A
.........
n vn ...A
ich mit einer Vermeidung des Problems kam, wo alle Werte hinzugefügt werden immer zusätzlich und wird über einen separaten haben Benutzeroberfläche mit einem Optionsfeld, in dem der Benutzer auswählen kann, welcher Wert der Hauptwert sein soll.
Aber fragte sich, gibt es eine Möglichkeit, diese Logik direkt auf ein Django-Modell anzuwenden?
Ich bin mir nicht bewusst, eine Möglichkeit, es dem Modell hinzuzufügen, asside für das Testen in der Save-Methode. Sie könnten eine Bedingung eingeben, dass, wenn dieser Instanzstatus main ist, alle anderen Objekte in der Datenbank als zusätzliche Objekte aktualisiert werden. Sie müssen jedoch sicherstellen, dass Sie dort nicht in eine Endlosschleife geraten. – Shovalt
Die Funktionalität der Formularelemente muss mit JavaScript implementiert und vorzugsweise in einem ModelForm-Objekt validiert werden. – Shovalt