2008-12-05 5 views
25

Ich habe eine get_absolute_url Funktion zu einem meiner Modelle hinzugefügt.Django Admins "View on Site" zeigt auf example.com anstelle meiner Domain

def get_absolute_url(self): 
    return '/foo/bar' 

Die Admin-Seite hebt es auf und fügt eine „Ansicht vor Ort“ Link auf die Detailseite für das Objekt (wenn ich eine echte URL setzte dort statt „/ foo/bar“).

Das Problem ist statt http://localhost:8000/foo/bar geht es zu http://example.com/foo/bar.

Was mache ich falsch?

Antwort

24

Sie müssen default site Domain-Wert ändern.

+6

Dank. Es dauerte eine Weile, bis ich herausgefunden hatte, wie ich das machen sollte. Es ist ein Eintrag in der Tabelle django_site. Ich habe es gefunden und geändert, indem ich im Admin auf "Sites" geklickt habe. –

3

Sie können dies in/admin/sites ändern, wenn Sie admin aktiviert haben.

4

Das Lustigste ist, dass "example.com" an einem offensichtlichen Ort erscheint. Aber ich habe in ungefähr einer Stunde gesucht.

einfach Ihre Admin-Interface verwenden -> Seiten -> ... da ist es :)

1

Wenn Sie eine Site-Instanz den Admin gedacht bearbeitet haben, müssen Sie Ihren Web-Server für die Änderung wirksam neu zu starten . Ich denke, das muss bedeuten, dass die Datenbank nur gelesen wird, wenn der Webserver zum ersten Mal gestartet wird.

3

Wie andere erwähnt haben, hat dies mit der default sites framework zu tun.

Wenn Sie mit South für Datenbank-Migrationen (wahrscheinlich eine gute Idee im Allgemeinen) können Sie use a data migration to avoid having to make this same database change everywhere you deploy your application, entlang der Linien von

from south.v2 import DataMigration 
from django.conf import settings 

class Migration(DataMigration): 

    def forwards(self, orm): 
     Site = orm['sites.Site'] 
     site = Site.objects.get(id=settings.SITE_ID) 
     site.domain = 'yoursite.com' 
     site.name = 'yoursite' 
     site.save()