从多个直接关系中获取模型实例

时间:2016-09-23 10:09:00

标签: python django django-models

有人可以帮我从这个模型结构中获取数据吗?因为我现在很难坚持几个小时。

首先,我想从所有具有给定SubSpecialization

Doctor获取所有不同的Specialization.title

其次,我希望获得具有特定Doctor但没有Specialization.title的所有SubSpecialization

以下是Doctor型号

class Doctor(models.Model):
    name = models.CharField(max_length=50)
    room_no = models.IntegerField()
    floor_no = models.IntegerField()
    contact_no = models.CharField(max_length=50, blank=True, null=True)
    notes = models.CharField(max_length=70, blank=True, null=True)

此模型Doctor关系已与SpecializationSubSpecialization相关联。

class DoctorSpecialization(models.Model):
    doc = models.ForeignKey(Doctor, models.DO_NOTHING)
    spec = models.ForeignKey('Specialization', models.DO_NOTHING)

class DoctorSubSpecialization(models.Model):
    doc = models.ForeignKey(Doctor, models.DO_NOTHING)
    sub_spec = models.ForeignKey('SubSpecialization', models.DO_NOTHING)

这是我制定标准的地方。

class Specialization(models.Model):
    title = models.CharField(unique=True, max_length=45)
    point = models.IntegerField()

class SubSpecialization(models.Model):
    title = models.CharField(max_length=100)

SpecializationSubSpecialization请求帮助之间没有直接关系。

1 个答案:

答案 0 :(得分:1)

首先,你的专业化和亚专业化是与Doctor的多对多关系。您应该明确声明,并删除那些介入模型,除非您需要在其上存储其他信息。

class Doctor(models.Model):
    ...
    specializations = models.ManyToManyField('Specialization')
    subspecializations = models.ManyToManyField('SubSpecialization')

现在,您可以查询具有特定专业化的医生的所有子专业化:

SubSpecialization.objects.filter(doctor__specialization__title='My Specialization')

鉴于专业化与次专业化之间没有关系,你的第二个问题没有意义,你需要澄清你的意思"在特定的专业化中没有亚专业化"

修改

找到具有特定专业化但根本没有专业化的医生:

Doctor.objects.filter(specialization__name="My Specialization",
                      subspecialization=None)