Created
August 2, 2017 13:13
-
-
Save nck2/1cd5987410853c88f4b2cd43c0a34414 to your computer and use it in GitHub Desktop.
RecursionError
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 아래 13번째줄을 없애면 AsPre의 모델에 student 항목이 빈채로 저장 | |
# 하지만 13번째줄을 넣으면 첨부한 사진과 같은 오류 발생. | |
# AsPre의 모델에 student 항목을 현재 request의 유저로 저장하기 위해서는 views를 어떻게 해야 하나요? | |
# views.py | |
def preas_detail(request,pk): | |
'''평가항목보이기''' | |
if request.method=="POST": | |
form = AsPreModelForm(request.POST,addr=request.user.profile.address) | |
if form.is_valid(): | |
forme=form.save(commit=False) | |
forme.student=request.user #--------------> 여기가 문제인듯. | |
forme.check=True | |
forme.save() | |
form.save_m2m() | |
return redirect('presentation:presentation_list') | |
else: | |
form=AsPreModelForm(addr=request.user.profile.address) | |
return render(request,'presentation/preas_detail.html',{'form':form}) | |
# models.py | |
class GroupPre(models.Model): | |
'''학생 발표자료''' | |
title = models.CharField(max_length=50,verbose_name="발표제목") | |
created_at=models.DateTimeField(auto_now_add=True) | |
filedata = models.FileField(verbose_name="파일",upload_to="file_for_presentation/%Y/%m/%d") | |
ban = models.CharField(max_length=5,verbose_name="분반",choices=[('1','1반'),('2','2반')]) | |
author = models.ManyToManyField(Profile,verbose_name="발표자",help_text="발표조에 해당하는 학생을 모두 체크하세요.") | |
predate= models.DateTimeField(verbose_name="발표일자",blank=True,null=True) | |
def __str__(self): | |
return self.title | |
class AsPre(models.Model): | |
'''학생평가자료''' | |
student=models.ManyToManyField(settings.AUTH_USER_MODEL,verbose_name="평가하는 사람") | |
pre = models.ManyToManyField(GroupPre,verbose_name="발표자료") | |
# ban = models.CharField(max_length=5,verbose_name="분반",choices=[('1','1반'),('2','2반')],default="1") | |
check= models.BooleanField(default=False,verbose_name="평가여부") | |
answer_choice = ( | |
("1", "매우그렇다"), | |
("2", "그렇다"), | |
("3", "보통이다"), | |
("4", "그렇지않다"), | |
("5", "매우그렇지않다"), | |
) | |
question1=models.CharField(max_length=5,verbose_name="1번문항",choices=answer_choice,help_text="발표를 위해 많은 준비와 노력을 한 것 같다.") | |
question2=models.CharField(max_length=5,verbose_name="2번문항",choices=answer_choice,help_text="발표 내용이 학습에 도움이 되었다.") | |
question3=models.CharField(max_length=5,verbose_name="3번문항",choices=answer_choice,help_text="발표자가 발표를 자연스럽게 잘 하였다.") | |
question4=models.CharField(max_length=5,verbose_name="4번문항",choices=answer_choice,help_text="발표자료 및 내용이 듣는 사람이 잘 이해할 수 있도록 구성되었다.") | |
answer=models.TextField(verbose_name="과제 발표내용에 대한 의견",blank=True) | |
class_date=models.DateTimeField(auto_now_add=True,verbose_name="평가한 날짜") | |
def __str__(self): | |
return str(self.pre) | |
# forms.py | |
class GroupPreModelForm(forms.ModelForm): | |
class Meta: | |
model = GroupPre | |
fields='__all__' | |
widgets={ | |
# 'predate':forms.SelectDateWidget | |
'author':forms.CheckboxSelectMultiple, | |
} | |
def __init__(self,*args,addr=1,**kwargs): # 외래키를 폼에서 제한적으로 나타내는 코드 | |
self.addr=addr # views 에서 로그인한 학생의 반에 해당하는 분반의 프로필만 보여줌. | |
super(GroupPreModelForm,self).__init__(*args,**kwargs) | |
self.fields['author'].queryset=Profile.objects.filter(address=self.addr).order_by('class_number') #views에서 addr로 받은 분반에 해당하는 학생의 프로필만 보여줌. | |
class AsPreModelForm(forms.ModelForm): | |
class Meta: | |
model = AsPre | |
fields=['pre','question1','question2','question3','question4','answer'] | |
def __init__(self,*args,addr,**kwargs): | |
self.addr=addr # views 에서 로그인한 학생의 반에 해당하는 분반의 프로필만 보여줌. | |
super(AsPreModelForm,self).__init__(*args,**kwargs) | |
self.fields['pre'].queryset=GroupPre.objects.filter(ban=self.addr).order_by('-predate') #views에서 addr로 받은 분반에 해당하는 발표자료만 보여줌 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment