这是我的文件(如下),我不知道如何将疾病和症状添加到数据库(1-M关系)
网页看起来像:
数据名称:|
类型:|
症状:增加
|完成|
我无法处理这种情况。由于我必须添加多个症状,如何访问疾病id,因为此时数据库中不存在疾病条目。在
模型.py
class Disease(models.Model):
did = models.AutoField(verbose_name='Disease Id', primary_key=True)
dName = models.CharField(max_length=20)
dtype = models.CharField(max_length=10)
class Symptoms(models.Model):
sid = models.AutoField(verbose_name='Symptoms Id',primary_key=True)
sname = models.CharField(max_length=10)
disease = models.ForeignKey(Disease,related_name='symptoms',on_delete=models.CASCADE)
表单.py
^{pr2}$视图.py
class AddDisease(TemplateView):
template_name = 'personal/disease.html'
def get(self, request):
dform = DiseaseForm()
sform = SymptomForm()
ddata = Disease.objects.all()
sdata = Symptoms.objects.all()
args = {'dform': dform,'sform': sform,'ddata':ddata,'sdata':sdata}
return render(request,self.template_name,args)
疾病.html
<body>
<form method="post">
{% csrf_token %}
{{ dform.as_p }}
{{ sform.as_p }}
<input type="button" class="btn" name="addbtn" value="click">
</form>
</body>
Disease
被称为外键,正如您所说,在知道Disease
的实际id
之前,不能添加任何{Disease
和{1:m
。虽然我认为它们之间的理想关系是m:n
,因为一个Disease
可以有很多Symptom
,而一个{(disease_id, symptom_id)
,请参见{a1}无论如何,在您的场景中,您可以执行的步骤是:
Disease
实例。您可以定义一个函数,例如get_or_create_disease
,该函数首先查询数据库,检查dname
是否存在于数据库中,如果不存在,则插入一个新实例并返回新插入的实例,否则返回现有实例。在id
的Disease
实例,您可以插入所有Symptom
下面是一个伪代码:
pseudo只显示逻辑的。我只有
SQLAlchemy
的经验。在希望这会有帮助。在
相关问题 更多 >
编程相关推荐