несколько внешних ключей в модели django

#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.

Спасибо вам всем.