How can I make sure that a parent object has only one child/type?
class Property(...):
    class Meta:
        abstract = False
class Flat(Property):
    pass
class House(Property):
    pass 
class Land(Property):
    pass 
I want every property object to have none or at most one child. It can be either flat, house or land (or null).
Is it possible to create a DB constraint for this?
My idea was to create a constraint that checks:
class Meta:
    constraints = [
        models.CheckConstraint(check=Q(Q(flat__isnull=True) & Q(house__isnull=True)) 
                                     | 
                                     Q(Q(flat__isnull=True) & Q(land__isnull=True)) 
                                     |
                                     Q(Q(house__isnull=True) & Q(land__isnull=True)), 
                                name="constraint")]
But apparently, there are no such fields on a DB level (you can get flat by property.flat getter in Django but not in DB)
Edit:
properties.Property: (models.E012) 'constraints' refers to the nonexistent field 'flat'.
 
     
    