I'm working on a CMSy app for which I've implemented a set of models which allow for creation of custom Template instances, made up of a number of Fields and tied to a specific Customer. The end-goal is that one or more templates with a set of custom fields can be defined through the Admin interface and associated to a customer, so that customer can then create content objects in the format prescribed by the template.
I seem to have gotten this hooked up such that I can create any number of Template objects, but I'm struggling with how to create instances - actual content objects - in those templates. For example, I can define a template "Basic Page" for customer "Acme" which has the fields "Title" and "Body", but I haven't figured out how to create Basic Page instances where these fields can be filled in.
Here are my (somewhat elided) models...
class Customer(models.Model):
...
class Field(models.Model):
label = models.CharField(max_length=255)
component = models.ForeignKey(ContentType,
limit_choices_to={'id__in': component_choices}
)
fields = models.Manager()
class Template(models.Model):
label = models.CharField(max_length=255)
clients = models.ManyToManyField(Customer, blank=True)
fields = models.ManyToManyField(Field, blank=True)
class ContentObject(models.Model):
label = models.CharField(max_length=255)
template = models.ForeignKey(Template)
author = models.ForeignKey(User)
customer = models.ForeignKey(Customer)
mod_date = models.DateTimeField('Modified Date', editable=False)
def __unicode__(self):
return '%s (%s)' % (self.label, self.template)
def save(self):
self.mod_date = datetime.datetime.now()
super(ContentObject, self).save()
Thanks in advance for any advice!