Я новичок как в django, так и в python. Я пытаюсь найти лучший (наиболее эффективный) способ сделать запрос.Запись запроса ORJ django
Вот мои модели:
class Immunization(models.Model):
name = models.CharField(max_length=12, primary_key=True)
verbose_name = models.CharField(max_length=80)
desc = models.CharField(max_length=800)
effective_duration = TimedeltaField()
def __unicode__(self):
return self.name
class Patient(models.Model):
name = models.CharField(max_length=64)
age = models.IntegerField()
birthday = models.DateField()
def __unicode__(self):
return self.name
'''
ImmunizationRecord is a specific date an immunization was administered to a given patient.
'''
class ImmunizationRecord(models.Model):
patient = models.ForeignKey('Patient')
immunization = models.ForeignKey('Immunization')
date_administered = models.DateTimeField(auto_now_add=True)
Запрос Я пытаюсь выполнить является:.
* Получить все Прививки, что пациент не получил в прошлом Immunizations.effective_duration *
до сих пор я делаю что-то вроде этого:
def get_context_data(self, **kwargs):
context = super(ProfileView, self).get_context_data(**kwargs)
all = Immunization.objects.all()
done = ImmunizationRecord.objects.filter(patient__name=self.request.user)
for r in done:
#TODO: add date check for expiry
all = [s for s in all if r.immunization.name != s.name]
context['available_list'] = all
return context
Вы хотите, чтобы все иммунизации были там, где дата, назначаемая меньше сегодняшней даты, больше эффективной продолжительности? – agconti
Или вы хотите, чтобы все иммунизации, которые человек фактически не имеет в настоящее время? – agconti
Все прививки пациент НУЖДАЕТСЯ. Так что, если они получили вакцинацию 20 дней назад, а эффективная_нукция = 19, то они просрочены на 1 день, и им НУЖНА вакцинация. – JayPrime2012