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"排班表"
    

      

  • 相关阅读:
    二十一、Mysql之GTID
    二十、Mysql的过滤复制
    十九、Mysql的半同步复制
    十八、Mysql之延时从库
    十七、Mysql的主从(三)--主从故障监控分析
    抖音爬虫
    python 操作手机
    python sheet写入数据
    pandas用法大全
    caog
  • 原文地址:https://www.cnblogs.com/randomlee/p/10744812.html
Copyright © 2011-2022 走看看