simple CheckConstraint syntax?

Your conditions in the constraint aren’t python expressions, they’re positional parameters being passed in to the Q object initializer. (Take a look at Complex Lookups with Q objects.)
Try:
~(models.Q(light=True) & models.Q(pigment=True))
or:
models.Q(light__ne=True) | models.Q(pigment__ne=True)