在Django项目中,我们有一个模型SessionType
,该模型的category
外键为SessionCategory
。数据库中存在一个函数create_checkin_sessions
,该函数期望具有某个SessionCategory
,name
的{{1}}。如果不是,则会记录错误:
'Guide Check In'
问题在于,每个import logging
from lucy_web.models import Session, SessionType, SessionCategory
logger = logging.getLogger(__name__)
class SessionCategory(models.Model):
name = models.CharField(max_length=255, unique=True)
class SessionType(models.Model):
category = models.ForeignKey('lucy_web.SessionCategory')
GUIDE_CHECKIN_CATEGORY = "Guide Check In"
def create_checkin_sessions(family):
_check_guide_checkins_category()
session_number = 1
session_types = SessionType.objects.filter(category__name=GUIDE_CHECKIN_CATEGORY)\
.order_by('enterprise_checkin_ordering').all()
for session_type in session_types:
Session.objects.create(
session_type=session_type,
session_number=session_number,
family=family)
session_number += 1
def _check_guide_checkins_category():
"""Check whether the expected session category for guide check-ins exists"""
if not SessionCategory.objects.filter(name=GUIDE_CHECKIN_CATEGORY).exists():
logger.error(f"A session category for guide check-ins, '{GUIDE_CHECKIN_CATEGORY}', "
"is expected to exist, but was not found in the database.")
的{{1}}在内部仪表板中是可编辑的。如果更改name
,此函数将引发错误,而理想情况下,我们希望所有内容继续像以前一样工作。
由于这个原因,我正在考虑添加一个像SessionCategory
这样的字段,并在当时的数据迁移中使用name
填充它,并使用original_name
而不是name
从此开始,作为会话的“标识符”。
在我看来,这个问题以前必须已经解决过。有什么脚本可以处理这种情况?