model-bakers/model_bakery

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

legshort opened this issue · 1 comments

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

  • Python: 3.10.3
  • Django: 4.1.2
  • Model Bakery: 1.8.0

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.