Re: Developing a flexible CMS
Hello everyone, I am talking to a friend to find a good solution for this question and finally write our own CMS. I am really thinking about how to create a flexible CMS and don't break django or don't rework a lot of stuff. So, what I do believe is that we have to focus on a Management System then Content, and a flexible system should be able to go as far as we want. So, I like the idea of a page, but I do believe that a "portlet" is more useful then a page content. So, with this in mind, we have to think about a subapplication to be shown on a page, and not a bit of a rock to put on the screen. But, of course, the simplest portlet will be just a "content-link", but if I want something more complex, I can do it and without the necessity of to write a new template tag, because, if I am not a programmer I will get stucked and Django solution won't be my solution. A CMS is to make my website easier to grow, and not to create barriers. And about managing multiple objects of a model, we MUST remember that THERE IS Django's Manager and that's what we have to work on. So, I think that our answer for this question resides on there. Django is flexible, powerful, but "young" and don't have "much" automated because WE don't know the perfect solution yet. But I don't believe it will be far from the actual implementation. Not rework, but improve Django, that's the way for a Real django powered CMS that I would like to see. On 27 jun, 01:03, sime <[EMAIL PROTECTED]> wrote: > Hi Kyle, I've run into the same problems before. I think you'll find > Django admin is great for simple operations involving single records > and the most basic relations. But for anything beyond that, you'll > probably need to roll your own admin page. > > On Jun 25, 1:15 am, Kyle Fox <[EMAIL PROTECTED]> wrote: > > > I hope I can explain this well, because I've been wracking my poor > > little brain trying to figure out how to do this :) > > > I'm trying to create a flexible CMS. I want it to be easy for users > > to create a Page, and attach all kinds of content ("components") to > > that page. These components would all be Model classes. Here are two > > simple examples of the components I had in mind: > > > class TextSnippet(models.Model): > > body = models.TextField() > > > class Photo(models.Model): > > image = models.ImageField(upload_to="photos") > > > The idea is that a user add an arbitrary number of these components to > > a Page model. A Page model is nothing more than a container to hold > > components, and a URL associated with the Page, something like: > > > class Page(models.Model): > > url = models.CharField( maxlength=100, unique=True, > > validator_list=[validators.isAlphaNumericURL]) > > > The problem is that I can't figure out a good way to associate > > instances of TextSnippet and Photo with a page. It's obviously a many- > > to-many between the components and pages (a component like a photo can > > be on many pages, and a page can have many components), but I also > > need to store more information about that particular page-component > > relationship, for example a IntegerField that specifies the > > component's position on that page. Here's what I've come up with so > > far: > > > class PageComponent(models.Model): > > page = models.ForeignKey(Page, related_name="components", > > edit_inline=models.TABULAR) > > content_type = models.ForeignKey(ContentType) > > object_id = models.IntegerField(core=True) > > position = models.IntegerField(default=0, blank=True) > > > It "works" not too bad. Conceptually (from the shell), I think it > > does what I want. However, I'm having a HECK of a time getting the > > Page form in the admin to work in an intuitive way. When adding > > components to a page, the user sees a drop-down list of content_types, > > and has to enter an object_id. It works for me because I know what to > > put for the object_id, but a regular user wouldn't > > > I think this would require me to write a custom form class for adding > > and editing a page, but with these relationships I really don't even > > know where to begin :S > > > If anyone can provide advice (or just flat out tell me if I'm thinking > > about this wrong), it would be much appreciated! > > > Thanks, > > Kyle --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~--~~~~--~~--~--~---
Re: Developing a flexible CMS
Hi Kyle, I've run into the same problems before. I think you'll find Django admin is great for simple operations involving single records and the most basic relations. But for anything beyond that, you'll probably need to roll your own admin page. On Jun 25, 1:15 am, Kyle Fox <[EMAIL PROTECTED]> wrote: > I hope I can explain this well, because I've been wracking my poor > little brain trying to figure out how to do this :) > > I'm trying to create a flexible CMS. I want it to be easy for users > to create a Page, and attach all kinds of content ("components") to > that page. These components would all be Model classes. Here are two > simple examples of the components I had in mind: > > class TextSnippet(models.Model): > body = models.TextField() > > class Photo(models.Model): > image = models.ImageField(upload_to="photos") > > The idea is that a user add an arbitrary number of these components to > a Page model. A Page model is nothing more than a container to hold > components, and a URL associated with the Page, something like: > > class Page(models.Model): > url = models.CharField( maxlength=100, unique=True, > validator_list=[validators.isAlphaNumericURL]) > > The problem is that I can't figure out a good way to associate > instances of TextSnippet and Photo with a page. It's obviously a many- > to-many between the components and pages (a component like a photo can > be on many pages, and a page can have many components), but I also > need to store more information about that particular page-component > relationship, for example a IntegerField that specifies the > component's position on that page. Here's what I've come up with so > far: > > class PageComponent(models.Model): > page = models.ForeignKey(Page, related_name="components", > edit_inline=models.TABULAR) > content_type = models.ForeignKey(ContentType) > object_id = models.IntegerField(core=True) > position = models.IntegerField(default=0, blank=True) > > It "works" not too bad. Conceptually (from the shell), I think it > does what I want. However, I'm having a HECK of a time getting the > Page form in the admin to work in an intuitive way. When adding > components to a page, the user sees a drop-down list of content_types, > and has to enter an object_id. It works for me because I know what to > put for the object_id, but a regular user wouldn't > > I think this would require me to write a custom form class for adding > and editing a page, but with these relationships I really don't even > know where to begin :S > > If anyone can provide advice (or just flat out tell me if I'm thinking > about this wrong), it would be much appreciated! > > Thanks, > Kyle --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~--~~~~--~~--~--~---
Developing a flexible CMS
I hope I can explain this well, because I've been wracking my poor little brain trying to figure out how to do this :) I'm trying to create a flexible CMS. I want it to be easy for users to create a Page, and attach all kinds of content ("components") to that page. These components would all be Model classes. Here are two simple examples of the components I had in mind: class TextSnippet(models.Model): body = models.TextField() class Photo(models.Model): image = models.ImageField(upload_to="photos") The idea is that a user add an arbitrary number of these components to a Page model. A Page model is nothing more than a container to hold components, and a URL associated with the Page, something like: class Page(models.Model): url = models.CharField( maxlength=100, unique=True, validator_list=[validators.isAlphaNumericURL]) The problem is that I can't figure out a good way to associate instances of TextSnippet and Photo with a page. It's obviously a many- to-many between the components and pages (a component like a photo can be on many pages, and a page can have many components), but I also need to store more information about that particular page-component relationship, for example a IntegerField that specifies the component's position on that page. Here's what I've come up with so far: class PageComponent(models.Model): page = models.ForeignKey(Page, related_name="components", edit_inline=models.TABULAR) content_type = models.ForeignKey(ContentType) object_id = models.IntegerField(core=True) position = models.IntegerField(default=0, blank=True) It "works" not too bad. Conceptually (from the shell), I think it does what I want. However, I'm having a HECK of a time getting the Page form in the admin to work in an intuitive way. When adding components to a page, the user sees a drop-down list of content_types, and has to enter an object_id. It works for me because I know what to put for the object_id, but a regular user wouldn't I think this would require me to write a custom form class for adding and editing a page, but with these relationships I really don't even know where to begin :S If anyone can provide advice (or just flat out tell me if I'm thinking about this wrong), it would be much appreciated! Thanks, Kyle --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~--~~~~--~~--~--~---