注册 登录
编程论坛 Python论坛

怎样才能两列同时关联一张表?

twtmygfnh 发布于 2020-12-03 21:02, 1191 次点击
class Job_title(models.Model):
    job = models.CharField(verbose_name='职称管理', max_length=50)

    class Meta:
        verbose_name = '职称管理'
        verbose_name_plural = '职称管理'

    def __str__(self):
        return self.job


class Employees(models.Model):
    name = models.CharField(verbose_name='姓名', max_length=50)
    sex = models.CharField(verbose_name='性别', max_length=50)
    files_id = models.CharField(verbose_name='档案编号', max_length=50)
    id_number = models.CharField(verbose_name='身份证号', max_length=50)
    native_place = models.CharField(verbose_name='籍贯', max_length=50)
    nation = models.CharField(verbose_name='民族', max_length=50)
    birthdate = models.DateField(verbose_name='出生日期')
    work_date = models.DateField(verbose_name='参加工作时间')
    join_date = models.DateField(verbose_name='进入医院时间')
    o_education = models.CharField(verbose_name='最初学历', max_length=50)
    n_education = models.CharField(verbose_name='最高学历', max_length=50)

    job_title = models.ForeignKey(Job_title, verbose_name='现凭职称', on_delete=models.CASCADE, blank=True, null=True)
    employ_date = models.DateField(verbose_name='凭现职称时间')

    u_job_title=models.ForeignKey(Job_title, verbose_name='未凭职称', on_delete=models.CASCADE, blank=True, null=True)
    # get_date = models.DateField(verbose_name='取得未凭时间', blank=True, null=True)


怎样才能两列同时关联一张表?麻烦哪位老师帮忙指点
1 回复
#2
傻眼猫咪2021-08-02 16:19
不知道對你有沒有幫助,以下為我的代碼
程序代码:

from datetime import *

# 默認所有有關資料為d,d為全局屬性
d = {
    '姓名': 'None',
    '性别': 'None',
    '档案编号': 'None',
    '身份证号': 'None',
    '籍贯': 'None',
    '民族': 'None',
    '出生日期': 'None',
    '参加工作时间': 'None',
    '进入医院时间': 'None',
    '最初学历': 'None',
    '最高学历': 'None',
    }

class job_title: # 主類/父類 (parent class)
    def __init__(self, title):
        self.title = title[:50] # 局限50字
    def __str__(self):
        return self.title


class employees(job_title): # 副類/子類 (child class),對象(object)的括號裡必須輸入父類名稱job_title
    # 子類方法隱性繼承父類方法
    def __init__(self, title, data=d):
        self.data = data
        job_title.__init__(self, title) # 這裡開始繼承父類所有
   
    def update_info(self, dt, value): # 如果需要更新資料,可調用此函數
        if (dt == '出生日期') or (dt == '参加工作时间') or (dt == '进入医院时间'):
            value = list(map(int, value.split('/'))) # 我這裡是用'/'區隔,當然你也可以用'-'或其他
            years, months, days = value[0], value[1], value[2]
            try:
                DATE = datetime(years, months, days)
                value = DATE.strftime("%Y")+''+DATE.strftime("%m")+''+DATE.strftime("%d")+''
                self.data.update({dt: value[:50]}) # 局限50字
            except:
                print("日期形態必須輸入年月日格式: YYYY/mm/dd")
        else:
            self.data.update({dt: value[:50]}) # 局限50字

if __name__ == '__main__':
    # 以下為範例
    person = employees('魔法師') # 創建一個類,名為person,參數:title是'魔法師'
    person.update_info('民族', '火星族') # 默認值為'None',更新資料為'火星族'
    person.update_info('最初学历', '菜鳥等級') # 如上
    person.update_info('参加工作时间', '2018/3/18') # 嘗試輸入日期形態
    print(person.data) # 試列印出已更新的所有資料
1