diff --git a/dataclasses_avroschema/fields.py b/dataclasses_avroschema/fields.py
index c263d29..74a22a9 100644
--- a/dataclasses_avroschema/fields.py
+++ b/dataclasses_avroschema/fields.py
@@ -287,23 +287,22 @@ class ListField(ContainerField):
         items_type = self.type.__args__[0]
 
         if utils.is_union(items_type):
-            self.items_type = UnionField(
+            self.internal_field = UnionField(
                 self.name,
                 items_type,
                 default=self.default,
                 default_factory=self.default_factory,
                 model_metadata=self.model_metadata,
                 parent=self.parent,
-            ).get_avro_type()
+            )
         else:
             self.internal_field = AvroField(
                 self.name, items_type, model_metadata=self.model_metadata, parent=self.parent
             )
-            self.items_type = self.internal_field.get_avro_type()
+
+        self.items_type = self.internal_field.get_avro_type()
 
     def fake(self) -> typing.List:
-        # return a list of one element with the type specified
-        # TODO: check when the internal value is self reference which seems to return `None`
         return [self.internal_field.fake()]
 
 

diff --git a/tests/fake/test_fake.py b/tests/fake/test_fake.py
index 596adfb..c81f8f1 100644
--- a/tests/fake/test_fake.py
+++ b/tests/fake/test_fake.py
@@ -155,6 +155,7 @@ def test_self_one_to_many_relationship() -> None:
     class User(AvroModel):
         name: str
         age: int
+        points: typing.List[typing.Optional[types.Float32]]
         teamates: typing.Optional[typing.List[typing.Type["User"]]] = None
 
     assert isinstance(User.fake(), User)

AttributeError: 'NoneType' object has no attribute 'fake'
**Describe the bug**

In my pydantic data model I have the following attribute `X: List[Optional[types.Float32]]`. When I call fake() of this class I get the error 'AttributeError: 'NoneType' object has no attribute 'fake''

**To Reproduce**
```py
from dataclasses_avroschema import types
from dataclasses_avroschema.avrodantic import AvroBaseModel 
from typing import List, Optional, Union

class Model(AvroBaseModel):
    A: str
    B: types.Float32
    X: List[Optional[types.Float32]]
    Y: List[Union[types.Float32, None]]

print(Model.fake())
```

**Expected behavior**

`A='BCGUpoVuoBhZZsPxLBTL' B=3.97300348265236 X=[0.22, 0.3, None] Y=[90.4, 3472.0, None]`
tests/fake/test_fake.py::test_self_one_to_many_relationship
tests/fake/test_fake.py::test_fake_primitive_types tests/fake/test_fake.py::test_fake_complex_types tests/fake/test_fake.py::test_fake_with_user_data tests/fake/test_fake.py::test_fake_with_logical_types tests/fake/test_fake.py::test_fake_union tests/fake/test_fake.py::test_fake_one_to_one_relationship tests/fake/test_fake.py::test_fake_one_to_many_relationship tests/fake/test_fake.py::test_fake_one_to_many_map_relationship tests/fake/test_fake.py::test_self_one_to_one_relationship tests/fake/test_fake.py::test_self_one_to_many_map_relationship tests/fake/test_fake.py::test_optional_relationship tests/fake/test_fake.py::test_decimals tests/fake/test_fake.py::test_int32 tests/fake/test_fake.py::test_float32