Is it considered bad practice to use a CharField as an enum? If so, is
my use case small enough that it's not a big deal, or is there
something I'm missing that I should change it?
You are looking at this entirely the wrong way. The choice of field depends entirely on the data you want to store. So, the question isn't if CharField is bad practice for enum, the question you need to ask is:
"What do I need to store in my database for this piece of
information?"
There is a school of thought that says that you should only store integers in the database if you want the database to help you do calculations on that field, otherwise, you should store numbers as a string type, because this gives you more flexibility.
I am not going to go much deeper into that because its an opinionated topic, what I am going to say is if you decide that storing the data as characters makes sense for your application, then just do it. Do not over cook this in your mind.
I know that generally this kind of enum should be set up as a
models.IntegerField rather than a CharField, but since the front-end
uses Angular and the data is all served via an API, I feel like it
might provide a bit more useful information for the front-end to
receive 'weekly' rather than 2, for example.
I am not sure where you are drawing your conclusions about this, but there is no hard and fast rule about what datatype should enums refer to. This is up to your application and what information you need to store - and to decide that you need to know how you will query your database for this information.
In your case, you are looking at this from a API usability perspective, and that is perfectly fine. Your main purpose of this model is to store information and that information should be stored in a way that provides the most utility to your application.
Finally, do not use ; in Python. Although technically not incorrect, this is generally frowned upon and does not conform to the python style guide.
EVERY_TIME, WEEKLY, NEVER = 'every', 'weekly', 'never'