2009-07-29 4 views
1

Wie kann ich eine Blacklist für ein CharField angeben. Allerdings möchte ich, dass die Blacklist auch im Django-Admin-Panel wirksam ist ... sonst würde ich sie nur in der Ansicht validieren.Django CharField Einschränkungen

Mit Blacklist meine ich Werte, die nicht verwendet werden können. Ich habe auch einen Wert für den Wert festgelegt, aber ich möchte auch ein paar Strings deaktivieren.

Danke, Max

Antwort

1

Ich würde die save() - Methode des Modells und den einzufügenden Wert gegen eine schwarze Liste überschreiben, bevor ich die Methode save() der Elternklasse aufrufen würde.

So etwas (vereinfacht):

class BlackListModel(models.Model): 
    blacklist = ['a', 'b', 'c'] 

    # your model fields definitions... 

    def save(self, *args, **kwargs): 
     if self.blacklist_field in self.blacklist: 
      raise Exception("Attempting to save a blacklisted value!") 
     return super(BlackListModel, self).save(*args, **kwargs) 

diese Weise ist es in allen Anwendungen funktioniert.

0

Dies ist aus der Box nicht möglich. Sie müssten custom form field schreiben oder custom admin handling hinzufügen, um die Validierung auf Admin-Ebene durchzuführen. Um dies auf Datenbankebene zu tun, vermute ich, dass Sie eine Art Trigger und gespeicherte Prozedur einrichten müssen, aber das ist nicht mein Bereich, also werde ich das anderen überlassen.

Verwandte Themen