프로젝트의 Checking App의 모델 수정 후 변경 된 모델의 내용을 반영하여 views.py 수정

if request.method == "POST":
date = request.POST.get("date", "")
# teacher_name을 생성하기 위한 Query Set과 DataFrame
users = User.objects.all()
user_df = pd.DataFrame(columns=["teacher_id", "teacher_name"])
for user in users:
user_info = [
user.username,
user.first_name + user.last_name,
]
user_df = user_df._append(
pd.Series(user_info, index=user_df.columns), ignore_index=True
)
# date로 filtering한 Query Set과 DataFrame
filter_date = Attendance.objects.filter(date__icontains=date)
date_df = pd.DataFrame(data=filter_date.values())
# teacher_id 기준으로 merge
df = pd.merge(
date_df, user_df, on="teacher_id", how="left"
)
def ApiGraphWeekly(request, date):
if request.method == "POST":
date = request.POST.get("date", "")
# Forreign Key를 이용한 Query Set
AttendanceToTeacher = (
Attendance.objects.select_related("name__teacher")
.values(
"name__teacher__username",
"name__teacher__first_name",
"name__teacher__last_name",
"name__name",
"attendance",
"date",
)
.filter(date__icontains=date)
).order_by("attendance")
AttendanceToTeacher_df = pd.DataFrame(data=AttendanceToTeacher)
AttendanceToTeacher_df["teacher_name"] = (
AttendanceToTeacher_df["name__teacher__first_name"]
+ AttendanceToTeacher_df["name__teacher__last_name"]
)
수정 된 모델의 Foreign Key를 활용으로 원하는 Data Frame 생성과 병합이 동시에 가능
최소한의 object()함수 사용
AttendanceToTeacher = (
Attendance.objects.select_related("name__teacher")
.values(
"name__teacher__username",
"name__teacher__first_name",
"name__teacher__last_name",
"name__name",
"attendance",
"date",
)
Django ORM으로 Attendance 모델과 User 모델의 정보를 Join하여 필요한 필드를 선택하는 쿼리
select_related() 메서드는 ForeignKey 필드를 통해 다른 모델과의 관계를 정의한 경우에만 사용