2016-08-04 34 views
0

Ich erklärte ein rekursives Modell wie unten dargestellt. Wie ändere oder füge ich ein weiteres unique_together Meta hinzu, so dass das recursiveA Feld keine bereits existierende Kombination aus Name und Marker enthalten kann?Django Meta unique_together auf rekursive Modelle

Beispiel, wenn name = 'a' und Marker = 'b' dann recursiveA.name = 'a' und recursiveA.marker = 'b'

class A(models.Model): 
    name = models.CharField(max_length=32) 
    marker = models.CharField(max_length=32) 
    recursiveA = models.ManyToManyField('self', blank=True) 

    class Meta: 
     unique_together = ('name', 'marker') 

Antwort

0

Sie save Methode überschreiben können:!

class A(models.Model): 
    name = models.CharField(max_length=32) 
    marker = models.CharField(max_length=32) 
    recursiveA = models.ManyToManyField('self', blank=True) 

    class Meta: 
     unique_together = ('name', 'marker') 

    def save(self, *args, **kwargs): 
     is_new = self.pk is not None 
     if is_new: 
      assert self.name != self.recursiveA.name and self.marker ! = self.recursiveA.marker 
     return super().saver(*args, **kwargs)