0

私はdjangoとpythonの両方が初めてです。クエリを実行するための最良の (最もパフォーマンスの高い) 方法を見つけようとしています。

ここに私のモデルがあります:

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
4

2 に答える 2