如何从djnago中的相关表中检索数据

时间:2019-08-30 07:37:59

标签: django python-3.x

嘿,我想检索所有员工信息以及相应的工作时间 请帮助我,这是我的模特

class Staff(models.Model):

    vendor = models.ForeignKey(Vendor,on_delete=models.DO_NOTHING,blank = True)
    name = models.CharField(max_length=100)
    last_name = models.CharField(max_length = 100)
    gender = models.IntegerField(choices=GENDER_TYPE, default=0)



class OperatingHours_staff(models.Model):

    staff = models.ForeignKey(Staff,related_name='days',on_delete = models.CASCADE)
    day = models.IntegerField(choices = constants.DAYS)
    start_time = models.TimeField()
    end_time = models.TimeField()

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以尝试这样:

ModelState

基本上,我正在使用related objects进行查询。在定义从from datetime import datetime Staff.objects.filter( days__day="SOME_DAY", days__start_time__lte=datetime.now().time(), days__end_time__gte=datetime.now().time() ) related_name='days'的FK时,您已经定义了OperatingHours_staff


如果您需要员工的所有数据,请尝试以下操作:

Staff

或者您可以遍历Staff查询集(使用prefetch_related()来减少数据库命中率):

Staff.objects.values(
    'days__day', 'days__start_time', 'days__end_time'
)

或者如果您有职员,则使用如下反向关系:

for staff in Staff.objects.all().prefetch_related('days'):
    print(staff.days.all())