2008-12-05 11 views
25

Agregué una función get_absolute_url a uno de mis modelos.Puntos de "ver en el sitio" de Django Admin para example.com en lugar de mi dominio

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

El sitio de administración de la recoge y añade una "vista en el sitio" enlace a la página de detalles de ese objeto (cuando pongo una URL real de allí en vez de "/ foo/bar").

El problema es que en lugar de ir a http://localhost:8000/foo/bar, va a http://example.com/foo/bar.

¿Qué estoy haciendo mal?

Respuesta

24

Tiene que cambiar default site valor de dominio.

+6

Gracias. Me tomó un tiempo descubrir cómo hacerlo. Es una entrada en la tabla django_site. Lo encontré y lo cambié haciendo clic en "Sitios" en el administrador. –

3

Puede cambiar esto en/admin/sites si tiene habilitado el administrador.

4

Lo más gracioso es que "example.com" aparece en un lugar obvio. Sin embargo, estaba buscando dentro de una hora más o menos.

sólo tiene que utilizar su interfaz de administración -> Sitios -> ... ahí está :)

1

Cuando haya editado una instancia Sitio pensó que el administrador, es necesario reiniciar el servidor web para que el cambio surta efecto . Supongo que esto debe significar que la base de datos solo se lee cuando el servidor web se inicia por primera vez.

3

Como han mencionado otros, esto tiene que ver con default sites framework.

Si está utilizando South para las migraciones de bases de datos (probablemente una buena idea en general), se puede use a data migration to avoid having to make this same database change everywhere you deploy your application, a lo largo de las líneas de

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() 
Cuestiones relacionadas