Fixed #24774 -- Made contrib.site's Site.domain field unique

This commit is contained in:
Piotr Jakimiak 2015-05-14 19:59:36 +02:00 committed by Tim Graham
parent 4c2197db32
commit 70e3e2e08e
6 changed files with 36 additions and 1 deletions

View File

@ -565,6 +565,7 @@ answer newbie questions, and generally made Django that much better:
Philip Lindborg <philip.lindborg@gmail.com>
Philippe Raoult <philippe.raoult@n2nsoft.com>
phil@produxion.net
Piotr Jakimiak <piotr.jakimiak@gmail.com>
Piotr Lewandowski <piotr.lewandowski@gmail.com>
plisk
polpak@yahoo.com

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import django.contrib.sites.models
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sites', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='site',
name='domain',
field=models.CharField(max_length=100, unique=True, validators=[django.contrib.sites.models._simple_domain_name_validator], verbose_name='domain name'),
),
]

View File

@ -73,7 +73,7 @@ class SiteManager(models.Manager):
class Site(models.Model):
domain = models.CharField(_('domain name'), max_length=100,
validators=[_simple_domain_name_validator])
validators=[_simple_domain_name_validator], unique=True)
name = models.CharField(_('display name'), max_length=50)
objects = SiteManager()

View File

@ -23,6 +23,11 @@ The sites framework is mainly based on a simple model:
The domain name associated with the Web site.
.. versionchanged:: 1.9
The ``domain`` field was set to be
:attr:`~django.db.models.Field.unique`.
.. attribute:: name
A human-readable "verbose" name for the Web site.

View File

@ -447,6 +447,9 @@ Miscellaneous
* Support for PostGIS 1.5 has been dropped.
* The ``django.contrib.sites.models.Site.domain`` field was changed to be
:attr:`~django.db.models.Field.unique`.
.. _deprecated-features-1.9:
Features deprecated in 1.9

View File

@ -135,6 +135,12 @@ class SitesFrameworkTests(TestCase):
clear_site_cache(Site, instance=site, using='default')
self.assertEqual(models.SITE_CACHE, {})
def test_unique_domain(self):
site = Site(domain=self.site.domain)
msg = 'Site with this Domain name already exists.'
with self.assertRaisesMessage(ValidationError, msg):
site.validate_unique()
class JustOtherRouter(object):
def allow_migrate(self, db, app_label, **hints):