ModelForm
까지 확장되는 ReviewForm
양식이 있습니다. ReviewForm
의 모델은 필드가있는 Review
입니다 :Django Model Forms 외래 키 드롭 다운의 가능한 값을 설정하십시오.
class Review(models.Model):
message = models.TextField(max_length = 4000)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(null = True)
rating = models.IntegerField(
default = 5,
validators = [MaxValueValidator(5), MinValueValidator(0)]
)
prof = models.ForeignKey(Prof, related_name = 'reviews')
course = models.ForeignKey(Course, related_name = 'reviews')
user = models.ForeignKey(User, related_name = 'reviews')
및 forms.py
class ReviewForm(ModelForm):
rating = CharField(widget=TextInput(attrs={'type': 'number','value': 5, 'min': 0, 'max': 5}))
class Meta:
model = Review
fields = ['message', 'rating', 'prof', 'course', 'user']
내가 그것을 렌더링하기 전에 폼에 초기 값을 전달하기 위해 노력하고있어하십시오. 여기 prof
및 user
이 성공적으로 설정의 views.py
def review(request, prof_id=None):
""" Review a prof """
# If there's an input prof, return review page for that prof
if prof_id:
user = User.objects.get(pk=request.user.id)
prof = prof_views.prof(prof_id)
course = prof.course_set.all()
data = {'user': user, 'prof': prof, 'course': course}
review_form = ReviewForm(initial=data)
return render(request, 'reviews/review_form.html', {'review_form': review_form})
review_form = ReviewForm()
return render(request, 'reviews/review_form.html', {'review_form': review_form})
초기 값에 대한 내 코드입니다. courses
(prof
)을 전달하려고하며 해당 쿼리가 해당 쿼리를 표시하도록합니다. 그러나 장고는 그것을 받아들이지 않는 것 같습니다.
이 기능을 코딩하는 방법을 잘 모르겠습니다. prof
과 user
의 초기 값 설정은 초기 값을 선택하기 때문에 가능합니다. 교수님 과정을 수강하는 코드가 있으니 : course = prof.course_set.all()
제대로 작동합니다. 쉘에서 테스트했습니다. 그래서 내가해야 할 일은 의 queryset 입력을 기반으로 양식의 코스 값을 설정하는 것입니다.
"장고가 받아들이지 않는 것"은 무엇을 의미 하는가? 드롭 다운으로 렌더링 될 것으로 예상 되나? –