django模型上的多个外键

时间:2016-10-14 12:54:27

标签: mysql database-design django-models

我正在寻求在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 工作。

谢谢大家。

0 个答案:

没有答案