sql >> Database teknologi >  >> RDS >> PostgreSQL

Django brugerdefineret unik sammen begrænsning

Du kunne sikkert løse dette med postgresqls indexes on expressions men her er en anden måde:

class Share( models.Model ):
    sharer = models.ForeignKey(User)
    receiver = models.ForeignKey(User), related_name='receiver')
    key = models.CharField(max_length=64, unique=True)

    def save(self, *args, **kwargs):
        self.key = "{}.{}".format(*sorted([self.sharer_id, self.receiver_id]))
        super(Share, self).save(*args, **kwargs)

Men det ville åbenbart ikke fungere, hvis du ændrer værdier med QuerySet.update metode. Du kan også se på django-denorm , det løser dette med triggere.




  1. Lukning og start af Oracle-instansen

  2. SQL to kriterier fra én gruppe-by

  3. MySQL - Tusindvis separator

  4. WhereRaw Laravel med variabel