2015-11-12 86 views
0

使我的網站地圖,並有大約只得到我的對象有一個有效的URL的詢問,解釋:地圖和get_absolute_url

對於爲例我的事件可以有潛水員網址,專用頁面,一個簡單的鏈接到pdf,重定向到我的網站或其他網站的其他頁面或根本沒有網址。

在我的地圖我這樣做只能讓事件有一個網址:

def items(self): 
    events = Event.objects.all() 
    event_array = [] 
    for event in events: 
     if event.get_absolute_url(): 
      event_array.append(event) 

    return event_array 

這是工作,但我有看型號經理,我認爲這能爲我做到這一點了,所以我的問題是:最好有一個模型經理爲此或我的方式做到這一點是好的?

謝謝:)

回答

0

是的,您的模特經理在這裏做這樣的工作。創建一個用url過濾所有事件的方法。
閱讀文檔的這一部分獲取更多詳情:Django 1.8 - Model Manager

如:

from django.db import models 

class EventManager(models.Manager): 
    def get_queryset(self): 
     return super(EventManager, self).get_queryset().all() 

    def with_url(): 
     return self.get_query_set().exclude(url__isnull=True, url__exact='') 


class Event(models.Model): 
    objects = EventManager() 
+0

謝謝,我會做這個,然後 – V1ce

+0

我加入了一個什麼樣的代碼應該看起來像 –

+0

謝謝你救了我的例子幾個小時^^,我試圖直接處理get_absolute_url方法,但沒有成功^^。一個奇怪的問題出現了,在這之後,我的所有沒有絕對url的事件都被刪除了我的數據庫,無法在管理界面中創建沒有url的事件,並且無法在我的事件中執行正常的查詢集,如Event.objects.filter(visible = True),將重新閱讀關於此的文檔... – V1ce