Implement an enum field that it is able to choose from a list (better if it is a list get from a URL) but it is also able to add new values not present in the initial list.
This functionality is similar to the tag system, but it should enforce only one "tag" and it should be stored as a string not an array of strings.