This is done to avoid duplicating code for main price options and part price options.
-Alternate proposed implementation
----------------------------------
+Alternate proposed implementation (1)
+-------------------------------------
Same thing as above except that price options are only for the main event.
That way the code is a bit less ugly.
-Alternate proposed implementation
----------------------------------
+Alternate proposed implementation (2)
+-------------------------------------
Have EventParts have a foreign key to the main event part. The "root" of the event becomes the main part.