Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简化此django查询-让django基于值获取实例_Python_Django_Model - Fatal编程技术网

Python 简化此django查询-让django基于值获取实例

Python 简化此django查询-让django基于值获取实例,python,django,model,Python,Django,Model,所以我现在有一个django查询。需要前两条语句才能获得第三条语句。我的问题是,是否有办法只使用第三条语句而不使用前两条语句 #patient_name and quest are two strings patientobj = modelPatient.objects.get(patient_name=patient_name) questobj = modelInterviewQuestion.objects.get(question=quest) answer = model

所以我现在有一个django查询。需要前两条语句才能获得第三条语句。我的问题是,是否有办法只使用第三条语句而不使用前两条语句

 #patient_name and quest are two strings
 patientobj = modelPatient.objects.get(patient_name=patient_name)
 questobj = modelInterviewQuestion.objects.get(question=quest)
 answer   = modelInterviewAnswer.objects.get(patients=patientobj, questions=questobj)
我知道我可以这样做

answer   = modelInterviewAnswer.objects.get(patients= modelPatient.objects.get(patient_name=patient_name), questions= modelInterviewQuestion.objects.get(question=quest))
但我想知道有没有更简单的

以下是模型之间的关系

class modelPatient(models.Model):
    patient_name       = models.CharField(max_length=128, unique=False)
    patient_sex        = models.CharField(max_length=128, unique=False)
    patient_image      = models.ImageField(upload_to='images/', 

class modelInterviewQuestion(models.Model):
    question      = models.CharField(max_length=1000, unique=True)

class modelInterviewAnswer(models.Model):
    patients = models.ForeignKey(modelPatient)
    questions = models.ForeignKey(modelInterviewQuestion)
    patient_response = models.CharField(max_length=1000, unique=True)
试试这个

answer = modelInterviewAnswer.objects.get(patients__patient_name=patient_name, questions__question=quest)
请仔细阅读本文档,了解如何编写查询

我想提请大家注意命名惯例

不要用model作为model名称的前缀,例如modelPatient应该是唯一的Patient。 不需要在模型中编写“患者”。应该是 例如,您的Paitent模型应该如下所示

class Patient(models.Model):
    name = models.CharField(max_length=128, unique=False)
    sex = models.CharField(max_length=128, unique=False)
    image = models.ImageField(upload_to='images/')
对于其他型号,也要遵循相同的说明

class InterviewQuestion(models.Model):
    question = models.CharField(max_length=1000, unique=True)

class InterviewAnswer(models.Model):
    patients = models.ForeignKey(modelPatient)
    interview_questions = models.ForeignKey(modelInterviewQuestion)
    patient_response = models.CharField(max_length=1000, unique=True)
因此,您的查询将被删除

answer = InterviewAnswer.objects.get(patients__name=patient_name, interview_questions__question=quest)

请提供模型之间的关系。当然,让我更新question@Darshit刚刚用更多的上下文更新了我的问题我想你需要在问题中加两个下划线,即问题__question@Darshit我还认为我们需要两个下划线。我会测试这个并发布back@JamesFranco如果字段仅引用一个实例,则您也不应为其指定复数名称。