#mysql #database-design #django-models
#mysql #проектирование базы данных #django-модели
Вопрос:
Я пытаюсь создать дизайн реляционной базы данных в Django, где одна таблица имеет отношения с несколькими моделями в БД.
Примеры моделей приведены ниже.
from __future__ import unicode_literals
from django.db import models
class State(models.Model):
state_name = models.CharField(max_length=100, unique=True)
class District(models.Model):
state_id = models.ForeignKey(State, on_delete=models.CASCADE)
district_name = models.CharField(max_length=100)
class County(models.Model):
county_id = models.ForeignKey(County, on_delete=models.CASCADE)
district_id = models.ForeignKey(District, on_delete=models.CASCADE)
county_name = models.CharField(max_length=100, unique=True)
class Kiosk(models.Model):
county_id = models.ForeignKey(County, on_delete=models.CASCADE)
kiosk_name = models.CharField(max_length=100)
kiosk_type = models.CharField(max_length=100)
kiosk_size = models.CharField(max_length=100)
class Operator(models.Model):
kiosk_id = models.ForeignKey(County, on_delete=models.CASCADE)
operator_name = models.CharField(max_length=100)
Общая цель — зарегистрировать киоски и их операторов на административных территориях. Все отношения между моделями один ко многим. Административные территории являются иерархическими из штатов-округов-поселков, что в соответствии с дизайном схемы приводит к одной таблице, имеющей много внешних ключей. Например, Township (state_id, county_id) и Kiosk (state_id, county_id, township_id) и так далее.
Если такой дизайн подходит, то как бы я смоделировал его в Django таким образом, чтобы одна модель, такая как киоск, имела 2 или 3 внешних ключа, относящихся к другим моделям?
Если я попытаюсь добавить внешние ключи, как это показано в модели округа, я получаю следующую ошибку при применении миграций.
Вы пытаетесь добавить ненулевое поле ‘region_id’ в округ без значения по умолчанию; мы не можем этого сделать (базе данных нужно что-то для заполнения существующих строк). Пожалуйста, выберите исправление:
1) Теперь укажите одноразовое значение по умолчанию (будет установлено для всех существующих строк с нулевым значением для этого столбца)
2) Завершите работу и позвольте мне добавить значение по умолчанию в models.py Выберите опцию:
Очевидно, что это не способ сделать это, и я ищу совета у любого, у кого может быть решение этой проблемы.
Я работаю в Django 1.10.
Спасибо вам всем.