How to validate uniqueness constraint across foreign key (django)

后端 未结 3 1070
感动是毒
感动是毒 2020-12-03 10:47

I have the following (simplified) data structure:

Site
-> Zone
   -> Room
      -> name

I want the name of each Room to be unique

3条回答
  •  悲哀的现实
    2020-12-03 11:38

    class Room(models.Model):
        zone = models.ForeignKey(Zone)
        name = models.CharField(max_length=255)
    
        def validate_unique(self, *args, **kwargs):
            super(Room, self).validate_unique(*args, **kwargs)
            qs = Room.objects.filter(name=self.name)
            if qs.filter(zone__site=self.zone__site).exists():
                raise ValidationError({'name':['Name must be unique per site',]})
    

    I needed to make similar program. It worked.

提交回复
热议问题