PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Django персонализирано уникално заедно ограничение

Вероятно бихте могли да решите това с indexes on expressions на postgresql но ето друг начин:

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)

Но очевидно няма да работи, ако промените стойностите с QuerySet.update метод. Можете също така да погледнете django-denorm , той решава това с тригери.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres разделен низ с двойни кавички на множество редове?

  2. Обща продължителност на припокриващи се периоди с приоритет чрез изключване на самото припокриване

  3. Паралелен unnest() и ред на сортиране в PostgreSQL

  4. IS NOT NULL тестът за запис не връща TRUE, когато е зададена променлива

  5. Как да модифицирам поле с jsonPath в PostgreSQL?