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

      

  • 相关阅读:
    减小war包体积
    监视oracle执行的SQL语句(正在执行,已执行,执行性能查看)
    SqlServer性能检测和优化工具使用详细
    redis 超时失效key 的监听触发
    ActiveMQ实现延迟消息队列
    TDDL:来自淘宝的分布式数据层
    灰度发布
    Jenkins 定时构建和Poll SCM的区别
    SpringBoot 配置文件application.properties配置参数替换或者注入的几种方式
    HTML5基础 label 为input标签添加标记
  • 原文地址:https://www.cnblogs.com/randomlee/p/10744812.html
Copyright © 2011-2022 走看看