对于django/编程来说,任何帮助都是非常感谢的。我需要帮助了解医生预约的历史,并选择每次预约时进行的免疫接种,然后创建未来免疫接种的日期(基于免疫信息表,该表具有适当的免疫间隔,并将从访问日期起增加)。
models.py
class Immunizations(models.Model):
immunization = models.CharField(max_length=100, null=True)
interval = models.CharField(max_length=5, null=True)**This should probably be an integer field, will change later
class Visit(models.Model):
patient = models.ForeignKey(Patients)
date_of_visit = models.DateField(null=True)
weight = models.CharField(max_length=5, null=True)
immunization = models.ManyToManyField(Immunizations)
timestamp = models.DateTimeField(auto_now_add=True, default=datetime.datetime.now())
active = models.BooleanField(default=True)整个周末我都在阅读文档和问题,但是对于如何处理这个问题,我仍然感到非常矛盾。
我想要的是:
Visit.date_of_visit1
Visit.immunization1, Visit.date_of_visit1 + Immunization.interval1
Visit.immunization2, Visit.date_of_visit1 + Immunization.interval2
Visit.date_of_visit2
Visit.immunization1, Visit.date_of_visit2 + Immunization.interval1
ETC这可能会持续数年,每次访问都会进行不同的免疫接种。我想保存一份进行免疫接种的记录,并记录到期日,即使那个预产期已经过了。
views.py
def visit_profile(request, slug):
patient = Patients.objects.get(slug=slug)
try:
visit = Visit.objects.filter(patient_id=patient.id)
except:
return HttpResponseRedirect('/')
#Immunization Due Dates
visitdate = Visit.objects.get(patient_id=patient.id, active=1).date_of_visit
imm = Immunizations.objects.all()
visitimm = []
for immunization in imm:
due = Immunizations.objects.get(id= immunization.pk)
duedate = visitdate + timedelta(days=int(due.interval))
visitimm.append((due, duedate))
return render_to_response('patient.html',locals(), context_instance=RequestContext(request))我的views.py需要帮助。以上工作,但只在显示active=1访问信息。我不知道如何修改/重做以实现我想要的,并能够访问我的模板文件中的数据。我已经尝试过__in方法、迭代工具、循环等等。有人能给出正确的方法/方向吗?我将返回并正确设置错误捕获一旦我可以使代码工作。谢谢!
发布于 2013-08-13 00:27:36
是的,让interval成为一个IntegerField,或者更确切地说是一个PositiveSmallIntegerField,因为它永远不会得到一个负值,也不会得到一个非常大的数字。小心,最好不要将模型名称中的复数和单数混为一谈,当您遍历外键时,它们会影响相关的名称,这会使调试( 请看这里 )变得很痛苦。我更喜欢只使用奇异点。
而不是:
visit = Visit.objects.filter(patient_id=patient.id)您可以简单地键入:
visit = Visit.objects.filter(patient=patient)试试像这样的东西
def visit_profile(request, slug):
patient = Patients.objects.get(slug=slug)
visitimm = []
# Looping over all active visit records of the patient in date order
for v in patient.visit_set
.filter(active=True).order_by('date_of_visit'):
# Looping over each visit's immunizations
for i in v.immunizations_set.all():
duedate = v.date_of_visit + timedelta(days=int(i.interval))
visitimm.append((i, duedate))
...https://stackoverflow.com/questions/18188403
复制相似问题