Change admin form field with a custom one

I got a Category model

class Category(models.Model):
    name = models.CharField(max_length=120,default='', verbose_name=_('name'))
    color = ColorField(default='#FF0000')

and a Product model

class Product(models.Model):
     name = models.CharField(max_length=120)
     category = models.ForeignKey(Category, on_delete=models.CASCADE, default=None)

In the Product admin page, I want to make the category drop-down to show the name with the category’s color.
With help from this question:

I manage to make a colored category field in my admin page:

and this is the code behind it (added to product/
but the test_field does not know I want it to “connect” to the category field and replace it.
So when I save the form the data put init Test field is not saved as the category.
My question is how can it be done?

You don’t want to create this as a new field on the form.

Since you’re creating a model form, you want to use the proper field and assign the widget to that field in the Meta class.
See Overriding the default fields.