zoukankan      html  css  js  c++  java
  • Django 多个字段关联同一外键

    # -*- coding: utf-8 -*-
    """
    Tencent is pleased to support the open source community by making 蓝鲸智云(BlueKing) available.
    Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved.
    Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
    You may obtain a copy of the License at http://opensource.org/licenses/MIT
    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
    an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and limitations under the License.
    """
    
    from django.db import models
    
    
    class ops(models.Model):
    	name = models.CharField(max_length=30)
    
    
    class shift(models.Model):
    	shift_class = models.CharField(max_length=30)
    
    
    class ops_shift(models.Model):
    	"""
    	多个字段对应同一个外键的情况下会报错
    
    	原因是指向同一模型的三个外键反向关联名称产生了冲突,shift模型对Day1字段的反向关联名称为ops_shift_set(),
    	对Day2的反向关联名称也是ops_shift_set(),对Day3的反向关联名称还是ops_shift_set()。
    
    	解决方法:给models.ForeignKey()加入related_name参数,定义不同的关联名称。
    
    	db_column属性是用来定义在数据库中此字段的名称
    	"""
    	ops_name = models.ForeignKey(ops,db_column='ops_name')
    
    	Day1  = models.ForeignKey(shift,related_name='ops_shift_Day1',default='',db_column='Day1')
    	Day2  = models.ForeignKey(shift,related_name='ops_shift_Day2',default='',db_column='Day2')
    	Day3  = models.ForeignKey(shift,related_name='ops_shift_Day3',default='',db_column='Day3')
    	Day4  = models.ForeignKey(shift,related_name='ops_shift_Day4',default='',db_column='Day4')
    	Day5  = models.ForeignKey(shift,related_name='ops_shift_Day5',default='',db_column='Day5')
    	Day6  = models.ForeignKey(shift,related_name='ops_shift_Day6',default='',db_column='Day6')
    	Day7  = models.ForeignKey(shift,related_name='ops_shift_Day7',default='',db_column='Day7')
    	Day8  = models.ForeignKey(shift,related_name='ops_shift_Day8',default='',db_column='Day8')
    	Day9  = models.ForeignKey(shift,related_name='ops_shift_Day9',default='',db_column='Day9')
    	Day10 = models.ForeignKey(shift,related_name='ops_shift_Day10',default='',db_column='Day10')
    	Day11 = models.ForeignKey(shift,related_name='ops_shift_Day11',default='',db_column='Day11')
    	Day12 = models.ForeignKey(shift,related_name='ops_shift_Day12',default='',db_column='Day12')
    	Day13 = models.ForeignKey(shift,related_name='ops_shift_Day13',default='',db_column='Day13')
    	Day14 = models.ForeignKey(shift,related_name='ops_shift_Day14',default='',db_column='Day14')
    	Day15 = models.ForeignKey(shift,related_name='ops_shift_Day15',default='',db_column='Day15')
    	Day16 = models.ForeignKey(shift,related_name='ops_shift_Day16',default='',db_column='Day16')
    	Day17 = models.ForeignKey(shift,related_name='ops_shift_Day17',default='',db_column='Day17')
    	Day18 = models.ForeignKey(shift,related_name='ops_shift_Day18',default='',db_column='Day18')
    	Day19 = models.ForeignKey(shift,related_name='ops_shift_Day19',default='',db_column='Day19')
    	Day20 = models.ForeignKey(shift,related_name='ops_shift_Day20',default='',db_column='Day20')
    	Day21 = models.ForeignKey(shift,related_name='ops_shift_Day21',default='',db_column='Day21')
    	Day22 = models.ForeignKey(shift,related_name='ops_shift_Day22',default='',db_column='Day22')
    	Day23 = models.ForeignKey(shift,related_name='ops_shift_Day23',default='',db_column='Day23')
    	Day24 = models.ForeignKey(shift,related_name='ops_shift_Day24',default='',db_column='Day24')
    	Day25 = models.ForeignKey(shift,related_name='ops_shift_Day25',default='',db_column='Day25')
    	Day26 = models.ForeignKey(shift,related_name='ops_shift_Day26',default='',db_column='Day26')
    	Day27 = models.ForeignKey(shift,related_name='ops_shift_Day27',default='',db_column='Day27')
    	Day28 = models.ForeignKey(shift,related_name='ops_shift_Day28',default='',db_column='Day28')
    	Day29 = models.ForeignKey(shift,related_name='ops_shift_Day29',default='',db_column='Day29')
    	Day30 = models.ForeignKey(shift,related_name='ops_shift_Day30',default='',db_column='Day30')
    	Day31 = models.ForeignKey(shift,related_name='ops_shift_Day31',default='',db_column='Day31')
    
    	class Meta:
    		"""
    		在Django的后台可以显示此处定义的中文名称
    		"""
    		verbose_name=u'排班表'
    		verbose_name_plural = u"排班表"
    

      

  • 相关阅读:
    CentOS /RHEL系统怎么更新安全补丁
    使用yum查询系统安装的软件及可以更新的软件并单独指定升级某一个软件
    惠普服务器通过ILO系统远程安装系统
    django进行数据库迁移的错误处理方法:You are trying to change the nullable field 'title' on book to non-nullable without a d
    Django数据库增删改查
    linux用户
    linux基础
    mysql小白系列_01 原理
    mysql运维入门6:MySQL读写分离
    mysql运维入门5:MySQL+kepalived高可用架构
  • 原文地址:https://www.cnblogs.com/randomlee/p/10744812.html
Copyright © 2011-2022 走看看