Django Admin's “view on site” points to example.com instead of my domain

后端 未结 6 915
一生所求
一生所求 2020-12-15 04:37

I added a get_absolute_url function to one of my models.

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

The admin site p

相关标签:
6条回答
  • 2020-12-15 04:54

    If you are on newer versions of django. the data migration is like this:

    from django.conf import settings
    from django.db import migrations
    
    def change_site_name(apps, schema_editor):
        Site = apps.get_model('sites', 'Site')
        site = Site.objects.get(id=settings.SITE_ID)
        site.domain = 'yourdomain.com'
        site.name = 'Your Site'
        site.save()
    
    class Migration(migrations.Migration):
    
        dependencies = [
            ('app', '0001_initial'),
        ]
    
        operations = [
            migrations.RunPython(change_site_name),
        ]
    
    0 讨论(0)
  • 2020-12-15 04:58

    You have to change default site domain value.

    0 讨论(0)
  • 2020-12-15 04:59

    When you have edited a Site instance thought the admin, you need to restart your web server for the change to take effect. I guess this must mean that the database is only read when the web server first starts.

    0 讨论(0)
  • 2020-12-15 05:04

    The funniest thing is that "example.com" appears in an obvious place. Yet, I was looking for in in an hour or so.

    Just use your admin interface -> Sites -> ... there it is :)

    0 讨论(0)
  • 2020-12-15 05:10

    As others have mentioned, this is to do with the default sites framework.

    If you're using South for database migrations (probably a good idea in general), you can use a data migration to avoid having to make this same database change everywhere you deploy your application, along the lines of

    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()
    
    0 讨论(0)
  • 2020-12-15 05:14

    You can change this in /admin/sites if you have admin enabled.

    0 讨论(0)
提交回复
热议问题