首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django问答应用程序存储用户响应

Django问答应用程序存储用户响应
EN

Stack Overflow用户
提问于 2022-07-13 20:09:55
回答 1查看 138关注 0票数 0

我正在创建一个Django测试应用程序,其中将有每月测试。所以,假设七月有一个测验,八月份有一个测验。现在让我们假设我们有一个名为"Sovit“的用户。现在假设每个测验有42个问题。因此,我想存储用户在数据库中选择的每个响应。因此,就像7月份的测试一样,所有42个响应都必须存储在某个地方,8月份同样如此。现在,我正在考虑有一个与用户关联的JSON文件,然后在其中存储每个测试的响应。它将帮助我获得JSON格式的数据,用于数据分析。但我并不喜欢这种储存回应的方法。这个设计有什么问题吗?还有什么别的方法我可以试试吗?

目前的模式:

代码语言:javascript
复制
class Quiz(models.Model):

    id = models.AutoField(primary_key=True)
    quiz_name = models.CharField(max_length=500)
    month = models.CharField(max_length=250,null=True,blank=True)
    year = models.CharField(max_length=250,null=True,blank=True)


    def __str__(self):
        return self.quiz_name+"-"+str(self.month)+"-"+str(self.year)

    def save(self,*args,**kwargs):
        if not self.quiz_name:
            self.quiz_name = self.quiz_name+"-"+str(self.month)+"-"+str(self.year)
        super(Quiz,self).save(*args,**kwargs)

    
class Question(models.Model):

    id = models.AutoField(primary_key=True)
    question = models.CharField(max_length=500)
    quiz = models.ForeignKey(Quiz,on_delete=models.CASCADE)
    month = models.CharField(max_length=250,null=True,blank=True)
    year = models.CharField(max_length=250,null=True,blank=True)

    def __str__(self):
        return self.question+"-"+str(self.month)+"-"+str(self.year)


    

class Answers(models.Model):
    id = models.AutoField(primary_key=True)
    answer = models.CharField(max_length=500)
    score = models.IntegerField()

    def __str__(self):
        return self.answer


class UserQuizAnswer(models.Model):
    options = (
        (0,0),(1,1),(2,2),(3,3)
    )
    id = models.AutoField(primary_key=True)
    question = models.ForeignKey(Question,on_delete=models.CASCADE,null=True,blank=True)
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    selcted_index = models.IntegerField(choices=options)


    def __str__(self):
        return self.user.username + "-" + str(uuid.uuid4())[:10]


class StudentFile(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.TextField(null=True,blank=True)
    student = models.ForeignKey(User,on_delete=models.CASCADE)
    student_netid = models.IntegerField(null=True,blank=True)
    student_email = models.EmailField(null=True,blank=True)
    file = models.FileField(upload_to="Student/Files/",null=True,blank=True)
    month = models.CharField(max_length=250,null=True,blank=True)
    year = models.CharField(max_length=250,null=True,blank=True)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-13 23:42:10

首先,您不需要在问题模型中的字段月份和年(您已经将此信息存储在测验模型中)。我想你忘了问题模型的链接答案了。

要实现UserQuizAnswer,可以使用JSONField存储打包的数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72972071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档