溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

django項(xiàng)目數(shù)據(jù)庫中 表結(jié)構(gòu)設(shè)計 和 同一表中設(shè)置多個聯(lián)合唯一 存在的問題分析

發(fā)布時間:2020-06-12 10:32:19 來源:網(wǎng)絡(luò) 閱讀:373 作者:even_07 欄目:編程語言

問題描述:

我現(xiàn)在有的表結(jié)構(gòu)是班級表,課程表,
班級表的主要結(jié)構(gòu)如下

課程名稱 學(xué) 期 校 區(qū) 任課老師 s
class_title time campuses teachers

表結(jié)構(gòu)中:
class_title,time,campusees必須設(shè)置聯(lián)合唯一,
所以在django中的modes.py 文件中設(shè)置如下

from django.db import models
class ClassList(models.Model):
    """
    班級表
    """
    course = models.CharField("課程名稱", max_length=64, choices=course_choices)
    semester = models.IntegerField("學(xué)期")
    campuses = models.ForeignKey('Campuses', verbose_name="校區(qū)")
    teachers = models.ManyToManyField('UserProfile', verbose_name="老師")

    class Meta:
            unique_together = ("course", "semester", 'campuses')

課程表的主要結(jié)構(gòu)如下

班 級 授課內(nèi)容 節(jié) 次 授課時間 班主任
re_class content day_num date b_teacher

設(shè)置class與date_num為聯(lián)合唯一,保證一個班級一天只能上一節(jié)課

class CourseRecord(models.Model):
    """課程記錄表"""
    day_num = models.IntegerField("節(jié)次", help_text="此處填寫第幾節(jié)課或第幾天課程...,必須為數(shù)字")
    date = models.DateField(auto_now_add=True, verbose_name="上課日期")
    course_title = models.CharField('本節(jié)課程標(biāo)題', max_length=64, blank=True, null=True)

    re_class = models.ForeignKey('ClassList', verbose_name="班級")
    teacher = models.ForeignKey('UserProfile', verbose_name="班主任")

    class Meta:
        unique_together = ('re_class', 'day_num')

但是就存在問題了???

如何保證同一個老師不會被’分身‘??
如:
python-1期-海南 3-31 第一節(jié) penny老師
python-2期-上海 3-31 第一節(jié) penny老師

如何解決呢???

方法一重新建表結(jié)構(gòu):

班 級 授課內(nèi)容 節(jié) 次 授課時間 班主任 授課教師
re_class content day_num date b_teacher teacher

將節(jié)次,授課時間,授課老師設(shè)為聯(lián)合唯一
而已經(jīng)設(shè)置class與date_num為聯(lián)合唯一
這可就出現(xiàn)了倆個聯(lián)合唯一的問題了???

class Meta:
        unique_together = [('re_class', 'day_num'), ('date', 'day_num', 'teacher')]

]

但是:

雖然可以限制,但是會出現(xiàn)飄頁面錯誤的問題?。。?!

django項(xiàng)目數(shù)據(jù)庫中 表結(jié)構(gòu)設(shè)計 和 同一表中設(shè)置多個聯(lián)合唯一  存在的問題分析

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI