model-bakers / model_bakery

Object factory for Django
https://model-bakery.readthedocs.io/en/latest/
Other
844 stars 85 forks source link

FileField and ArrayField not generated with random data when default=None or default=list #356

Open legshort opened 2 years ago

legshort commented 2 years ago

Describe the issue

Generating random data is not working below the condition. ArrayField with default=list FileField with default=None

To Reproduce

class A(models.Model):
    career = ArrayField(models.CharField(max_length=30), default=list)
    main_image = models.ImageField(blank=True, null=True, default=None)

a = baker.make(A, _fill_optional=True, _create_files=True)
print(a.career, a.main_image)

[], None

Expected behavior ArrayField and FileField should be filled with random data.

Versions

kiranrokkam09 commented 1 year ago

hi @legshort we can use below function and solve the above issue.

def generate_random_a():
    return A(
        career=[fake.word() for _ in range(3)],  # Generate a list of 3 random words
        main_image=baker.make('PILImage')  # Generate a random image
    )

a = baker.make(A, _fill_optional=True, _model_instance_generator=generate_random_a)

if you like the solution please assign me the issue.