I'm creating some constraints in my Meta class that reference an IntegerChoices enum. The issue I'm having is that I can't seem to figure out how to reference that IntegerChoices enum.
class MyModel(models.Model):
States = models.IntegerChoices('States', 'PROGRESSING INSTALLED DELETED')
state = models.PositiveSmallIntegerField(choices=States.choices, help_text='Defines the cluster\'s current state')
class Meta:
constraints = [
models.CheckConstraint(check=models.Q(state__in=States), name='cluster_state_valid'),
]
self.States isn't working, no self object. MyModel.States isn't working either since MyModel isn't fully instantiated at this point.
Any advice/recommendation would be appreciated, thanks!
CodePudding user response:
I would advise that you define the enum outside the MyModel, such that it is interpreted first, so:
States = models.IntegerChoices('States', 'PROGRESSING INSTALLED DELETED')
class MyModel(models.Model):
States = States
state = models.PositiveSmallIntegerField(choices=States.choices, help_text='Defines the cluster\'s current state')
class Meta:
constraints = [
models.CheckConstraint(check=models.Q(state__in=States.values), name='cluster_state_valid'),
] 