Консультируй в Джанго модель используя ORM?

class Curso(models.Model):
    fecha =  models.DateField()
    hora_inicio = models.TimeField()
    hora_fin = models.TimeField()
    capacidad_maxima = models.PositiveSmallIntegerField(default=6)
    sede = models.ForeignKey(Sede)
    profesor =  models.ForeignKey(Profesor)
    estudiantes  =  models.ManyToManyField(Estudiante,blank=True)
    tipo_nivel  = models.CharField(max_length='2',default='xx')
    tipo_leccion = models.PositiveSmallIntegerField(default=0)
    max_tipo = models.PositiveSmallIntegerField(default=3)
    tipo_estudiante=models.ManyToManyField(Nivel,related_name='tipo_estudiante', blank=True)

У меня есть эта модель, я нуждаюсь в том, чтобы сделать Query, который возвращал бы мне только курсы, которые пустые или находятся в уровне студента, добавочном, если он существует больше курсов в тот же час, и они пустые только, мне возвратили различные курсы или Ваш раз курс уровня студента для этого часа.

0
задан 09.03.2016, 23:53
2 ответа

Человек, со мной случается, что, чтобы знать, есть ли курсы в том же расписании, ты можешь использовать следующую funciГіn:

def is_courses_in_same_hour(self):
    courses = Curso.objects.all()
    for course in courses:
        if course.model.hora_inicio == self.hora_inicio and course.model.hora_fin == self.hora_fin:
            return True

ты Можешь играть с двумя фильтрами, и создавать одну funciГіn, который возвращает queryset, в котором ты нуждаешься.

1
ответ дан 24.11.2019, 14:45

используй 'from django.db.models import Q', чтобы реализовывать консультации 'or'.

Пример:

if form.cleaned_data['query']:
    query = form.cleaned_data['query']
    object_list = object_list.filter(
        Q(first_name__contains=query)
            | Q(last_name__contains=query)
            | Q(email__contains=query)
            | Q(identification_number__contains=query)
        ))
1
ответ дан 24.11.2019, 14:45