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

      

  • 相关阅读:
    SSE图像算法优化系列十七:多个图像处理中常用函数的SSE实现。
    SSE图像算法优化系列十六:经典USM锐化中的分支判断语句SSE实现的几种方法尝试。
    Tone Mapping算法系列二:一种自适应对数映射的高对比度图像显示技术及其速度优化。
    SSE图像算法优化系列十五:YUV/XYZ和RGB空间相互转化的极速实现(此后老板不用再担心算法转到其他空间通道的耗时了)。
    Android项目之JSON解析(3种解析技术详解)
    Android 图片文字识别DEMO(基于百度OCR)
    再谈如何将android studio项目转换成eclipse
    集成百度OCR
    异步任务AsyncTask使用解析
    Nginx+IIS,Asp.Net 服务器配置
  • 原文地址:https://www.cnblogs.com/randomlee/p/10744812.html
Copyright © 2011-2022 走看看