sql >> Databasteknik >  >> RDS >> PostgreSQL

Django anpassad unik tillsammans begränsning

Du skulle förmodligen kunna lösa detta med postgresqls indexes on expressions men här är ett annat sätt:

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 skulle uppenbarligen inte fungera om du ändrar värden med QuerySet.update metod. Du kan också titta på django-denorm , det löser detta med triggers.




  1. förvalda värden för en dynamisk listruta med flera värden

  2. Få en lista över första posten för varje grupp

  3. Hur kontrollerar jag om ett värde är ett heltal i MySQL?

  4. Hur man vet om DELETE-frågan verkligen tar bort en rad med PDO