Desperate, please help. Will work for food 🙂
I want to be able to have pages at the following URLs, and I want to be able to look them up by their URL (ie, If somebody goes to a certain URL, I want to be able to check for a page there).
mysite.com/somepage/somesubpage/somesubsubpage/ mysite.com/somepage/somesubpage/anothersubpage/ mysite.com/somepage/somesubpage/somesubpage/ mysite.com/somepage/somepage/
Notice I want to be able to reuse each page’s slug (ie, somepage/somepage). Of course each slug will be unique for it’s level (ie, cannot have two pages with mysite.com/somepage/other/ and mysite.com/somepage/other/ because they would in essence be the same page). What is a good way to do this. I’ve tried to store the slug for a page (‘somesubpage’) in a field called ‘slug’, and make each slug unique for it’s parent page so that the above circumstance can’t happen. The problem with this is that if I try to look up a page by it’s slug (ie, ‘somepage’), and there happens to be a page at mysite.com/other/somepage/ and mysite.com/page/somepage/, how would my application know which one to get (they both have the same slug ‘somepage’).
You need to also store
levelandparentattributes, so that you can always get the right object.The requirement to store hierarchical data comes up very frequently, and I always recommend django-mptt. It’s the Django implementation of an efficient algorithm for storing hierarchical data in a database. I’ve used it on several projects. Basically, as well as storing level and parent, it also stores a
leftandrightfor each object, so that it can describe the tree and all its sub-elements uniquely. There are some explanatory links on the project’s home page.