Tôi đang tạo một hệ thống cho một công ty trong số những thứ khác phải lưu giữ thông tin về mức độ thỏa đáng về nhiều thứ khác nhau, tôi đã làm cho nó hoạt động tốt bằng mô hình cố định với câu hỏi và câu trả lời cố định , nhưng tôi chắc chắn rằng họ sẽ cần phải thay đổi hoặc thêm câu hỏi.Làm cách nào để thực hiện một cuộc khảo sát người dùng có thể tùy chỉnh ở Django
Vì vậy, tôi muốn tạo một hệ thống nơi người dùng có thể tạo các lược đồ đánh giá tùy chỉnh bao gồm các câu hỏi tùy chỉnh được xác định bởi chúng. Làm thế nào để tôi thực hiện một thiết kế như vậy?
Ngay bây giờ mô hình của tôi là thế này, nhưng sai:
RATING_CHOICES = ((0, u"Good"), (1, u"Bad"), (2, u"Dunno"),)
class EvaluationScheme(models.Model):
title = models.CharField(max_length=200)
class Evaluation(models.Model):
doctor = models.CharField(max_length=200)
agency = models.CharField(max_length=200)
scheme = models.ForeignKey(EvaluationScheme)
class EvaluationQuestion(models.Model):
question = models.CharField(max_length=200)
evaluation = models.ForeignKey(EvaluationScheme)
def __unicode__(self):
return self.question
class EvaluationAnswer(models.Model):
evaluation = models.ForeignKey(Evaluation)
question = models.ForeignKey(EvaluationQuestion)
answer = models.SmallIntegerField(choices=RATING_CHOICES)
Đây là loại gì tôi muốn, ngoại trừ việc EvaluationScheme là vô ích, vì bạn vẫn phải chọn tất cả các câu hỏi và câu trả lời chính mình - nó không hiển thị danh sách chỉ các câu hỏi liên quan đến giản đồ lựa chọn.
Cảm ơn sự đóng góp của bạn - nhưng vấn đề là khi bạn thêm nhiều hơn một EvaluationScheme - sau đó bạn có thể trả lời tất cả các câu hỏi, không chỉ các câu hỏi liên quan đến lược đồ đã tạo. Ít nhất đó là vấn đề tôi gặp phải khi sử dụng giao diện quản trị. Nhưng có lẽ tôi cần phải làm một số AJAX trên những hình thức. –
Nếu bạn sử dụng mã của tôi ở đây bạn không nên có vấn đề đó. Dòng khóa trong mã của tôi là "cho câu hỏi trong evaluation.scheme.evaluationquestion_set.all()" chỉ lấy những câu hỏi liên quan đến lược đồ cho đánh giá này. Nếu mã của bạn không có dòng như vậy, bạn sẽ gặp sự cố bạn báo cáo. – krubo