Как установить уникальное поле для отношений с помощью Django? - PullRequest
0 голосов
/ 21 января 2012

Я создаю крошечный хост-сайт, где пользователь может создать сайт и вставить в него страницы.

Итак, я создал следующие классы:

class Website(models.Model):
    account = models.CharField(max_length=30, unique=True)
    custom_domain = models.CharField(max_length=130, blank=True, unique=True) #optional
    title = models.CharField(max_length=80)

class Page(models.Model):
    website = models.ForeignKey(Website)
    title = models.CharField(max_length=80)
    slug = models.CharField(max_length=80, unique=True)
    content = models.TextField()

Я хочу сделать поле 'slug' уникальным только для отношений между классами веб-сайтов и страниц. Таким образом, два сайта могут иметь страницу с одинаковым слагом. Как это:

 http://mysite.com/website_1/contact_page
 http://mysite.com/webiste_2/contact_page

Но для этого предназначен параметр поля «уникальный».

Какие-нибудь советы или лучшие практики в подобных случаях?

1 Ответ

1 голос
/ 21 января 2012

Отбросьте уникальное требование в столбце слагов и добавьте unique_together в мета-класс Page.

class Page(models.Model):
    website = models.ForeignKey(Website)
    title = models.CharField(max_length=80)
    slug = models.CharField(max_length=80)
    content = models.TextField()

    class Meta:
        unique_together = ('website', 'slug')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...