获取由employeeid过滤的id在其他表上存在的所有外键行

时间:2014-05-05 07:27:25

标签: django django-models orm

我有以下ORM查询集,它运行正常但现在我需要它将自己排除在已经在表上添加了具有相同ID的行的用户中。

换句话说,如果用户已经添加了对该特定问题的答案,我希望用户不要回答两次问题,他将永远不会看到这些值。这是我的查询ORM

right_now = datetime.datetime.now() - timedelta(minutes=-10)
partidos = encuesta.objects.filter(fecha__gt=right_now).order_by('fecha')

上面的ORM查询显示了今天的所有问题,直到截止日期前10分钟。

现在我想只显示特定用户已经回答的问题。正如你在下面看到的那样,我只需要出现那些他尚未回答但仍按日期和相同顺序过滤的问题。

有什么想法吗?

enter image description here

这是我的模特。

models.py

class equipo(models.Model):

nombre = models.CharField(max_length=30)
bandera = StdImageField(upload_to='bandera/%Y/%m/%d',
                        variations={
                        'large':(53,53, False),
                        'thumbnail': (70, 26, False)})

GRUPOS = (
    ('A', 'Grupo A'),
    ('B', 'Grupo B'),
    ('C', 'Gropo C'),
    ('D', 'Gropo D'),
    ('E', 'Gropo E'),
    ('F', 'Gropo F'),
    ('G', 'Gropo G'),
    ('H', 'Gropo H'),
)

grupo = models.CharField(max_length=1, choices=GRUPOS)

def banderaEquipo(self):
    return '<img src="/media/%s">' % (self.bandera.thumbnail)

banderaEquipo.allow_tags = True

def __unicode__(self):
    return self.nombre


class encuesta(models.Model):

equipoA = models.ForeignKey(equipo, related_name='equipo_equipoA')
golesEquipoA = models.IntegerField(max_length=2, null=True, blank=True)
equipoB = models.ForeignKey(equipo, related_name='equipo_equipoB')
golesEquipoB = models.IntegerField(max_length=2, null=True, blank=True)

ETAPA = (
    ('1', 'Primera Etapa'),
    ('2', 'Octavos De Final'),
    ('3', 'Cuartos De Final'),
    ('4', 'Semifinal'),
    ('5', 'Final'),
    ('6', '3ra Posicion')
)

etapa = models.CharField(max_length=1, choices=ETAPA)
fecha = models.DateTimeField(auto_now_add=False)

def __unicode__(self):

    return "%s Vs. %s" % (unicode(self.equipoA), unicode(self.equipoB))


class respuesta(models.Model):

encuesta = models.ForeignKey(encuesta)
empresa = models.ForeignKey(empresa)
empleado = models.ForeignKey(empleado)
equipoA = models.IntegerField(max_length=1)
equipoB = models.IntegerField(max_length=1)
fecha = models.DateField(auto_now_add=True)

def __unicode__(self):

    return "%s" % (unicode(self.encuesta))

1 个答案:

答案 0 :(得分:1)

主要想法:

Question.objects.exclude(answers__user=user)

在您的情况下(如果您将related_name encuestas添加到respuesta FK字段encuesta):

encuesta.objects.exclude(respuesta__empleado=user).filter(fecha__gt=right_now).order_by('fecha')