2010-02-07 8 views
0

Supposons que j'ai 3 modèles: Ville, Zone, Entrée.Configuration de l'URL de Django

Chaque ville a plusieurs zones et chaque zone peut avoir plusieurs entrées MAIS pour "maintenant", il ne peut y avoir qu'une seule entrée active et elle sera affichée. Donc, dans la logique:

Notez que chaque ville, zone, entrée utilisera la variable slug de classe modèle associé

Format sera dans un tel:

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

www.mysite.com/mycity/myarea/ -> exposerons une entrée Cela est lié à cette zone ET active (ceci peut être détecté en utilisant la fonction active_entry de Area).

Mais les utilisateurs peuvent voir des anciennes entrées telles que:

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

J'ai écrit les fonctions de get_absolute_url en lisant le livre « pratique Projets Django 2nd Edition », mais maintenant je suis stucked.

J'ai ces modèles:

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}) 

S'il vous plaît aider cette pauvre âme pour configurer sa configuration URL.

Merci

+0

Coincé avec quoi? Comment écrire les modèles 'urls.py'? À quoi voulez-vous que les URL ressemblent? Fournissez quelques exemples d'URL et les vues qu'ils sont censés déclencher. –

+0

Oui, je suis coincé avec la configuration url.py. Et j'ai déjà écrit des exemples d'URL dont j'ai besoin. Cordialement – Hellnar

Répondre

1

Il devrait probablement ressembler à quelque chose comme ça:

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'), 
) 
Questions connexes