views:

155

answers:

1

Hello,

Assume I have 3 Models: City, Area, Entry.

Each city has several Areas and each area can have several entries BUT for "now", there can be will be only one active Entry and it will be shown. So in logic:

Note that each city, area, entry will be using slug variable of related model class

Format will be in such:

www.mysite.com/<slug of city>/<slug of area>/<slug of entry>

www.mysite.com/mycity/myarea/ -> will be displaying an Entry that is bound to that Area AND active (this can be detected by using Area's active_entry function).

But users can view some old Entries such as:

www.mysite.com/mycity/myarea/some-old-entry-that-is-no-longer-active

I have written get_absolute_url functions by reading the "Practical Django Projects 2nd Edition" book but now I am stucked.

I have such models:

from django.db import models

class Entry(models.Model):
    area = models.ForeignKey('Area',verbose_name="The area that this entry belongs to")
    slug = slug = models.SlugField(unique=True) # this will be auto populated via admin panel, from title
    title = baslik = models.CharField()
    content = models.TextField()
    start_time = models.DateTimeField()#start time for this entry.
    end_time = models.DateTimeField()#end time for this entry.

    @models.permalink
    def get_absolute_url(self):
        return ("entry.detail",(),{"city":self.area.city.slug,"area":self.area.slug,"entry":self.slug})



class Area(models.Model):
    city = models.ForeignKey(verbose_name="city that this area belongs to")
    name = models.CharField(max_length=30)
    slug = models.SlugField(unique=True)# this will be auto populated via admin panel, from name

    @models.permalink
    def get_absolute_url(self):
        return ("bolge.detay",(),{"city":self.city.slug,"area":self.slug})

    def active_entry(self):
        from datetime import datetime, date, time
        now = datetime.now()
        try:
            return Entry.objects.get(area__exact=self,start_time__lte=now,end_time__gte=now)
        except Entry.DoesNotExist:
            return False



class City(models.Model):
    name =models.CharField(max_length=30)
    slug = models.SlugField(unique=True) # this will be auto populated via admin panel, from name
    @models.permalink
    def get_absolute_url(self):
        return ("city.detail",(),{"city":self.slug})

Please help this poor soul to configure his url configuration.

Thanks

+1  A: 

It should probably look like something like that:

urlpatterns = patterns('',
    (r'^(?P<city>[a-z-]+)/(?P<area>[a-z-]+)/$', 'yourapp.views.areaview'),
    (r'^(?P<city>[a-z-]+)/(?P<area>[a-z-]+)/(?P<entry>[a-z-]+)/$', 'yourapp.views.entryview'),
)
Luper Rouch