我正在寻求在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)
总体目标是在行政区域内注册信息亭及其运营商。模型之间的所有关系都是一对多的。行政区域是 States-Counties-Townships 的分层结构,根据模式设计,它会导致一个表具有许多外键。例如乡镇(state_id,county_id)和 Kiosk(state_id,county_id,township_id)等等。
如果这样的设计合适,那么我将如何在Django中对其进行建模,使得像kiosk这样的单个模型有2或3个与其他模型相关的外键?
如果我尝试添加县模型中显示的外键,则会在应用迁移时出现以下错误。
你试图在没有默认值的情况下向县添加一个不可为空的字段'region_id';我们不能那样做(数据库需要一些东西来填充现有的行)。 请选择修复:
1)现在提供一次性默认值(将在所有现有行上设置此列的空值)
2)退出,让我在models.py中添加默认值 选择一个选项:
显然不是这样做的方式,我正在寻求任何可能解决这个问题的人的指导。
我在 Django 1.10 工作。
谢谢大家。