Factory Boy random choice for a field with field option "choices"
You'll not need a FuzzyAttribute.
You can either restrict the values possible and only give the int value of each product type to FuzzyChoice by doing something like this:
PRODUCT_IDS = [x[0] for x in IceCreamProduct.PRODUCT_TYPES]
class IceCreamProductFactory(factory.django.DjangoModelFactory):
class Meta:
model = IceCreamProduct
type = factory.fuzzy.FuzzyChoice(PRODUCT_IDS)
It should do the work.
Please be aware that fuzzy module has been deprecated recently, see ( https://factoryboy.readthedocs.org/en/latest/fuzzy.html), you may want to use a LazyFunction instead.
You can do as easy as this
class IceCreamProductFactory(factory.django.DjangoModelFactory):
icecream_flavour = factory.Faker(
'random_element', elements=[x[0] for x in IceCreamProduct.PRODUCT_TYPES]
)
class Meta:
model = IceCreamProduct
PS. Don't use type
as attribute, it is a bad practice to use a built-in function name as an attribute