Модель набора запросов представлений на основе классов Django не определена

Я делаю веб-приложение в Django что хранит и сортирует курсы. У меня проблема в том, что набор запросов не распознает модель. Мне удалось вытащить все в представлении на основе классов и возиться с данными, однако, когда я пытаюсь выполнить набор запросов, он просто говорит, что модель "Курс" не определена. Я импортировал следующую модель:

class Course(models.Model):

    provider = models.ForeignKey(Provider)

    title = models.CharField('Course Title',
    max_length=200,
    )

    first_line = models.CharField('Address Line: 1',
    max_length=200,
    )
    second_line = models.CharField('Address Line: 2',
    max_length=200,
    )
    third_line = models.CharField('Address Line: 3',
    max_length=200,
    )
    city = models.CharField('City',
    max_length=200,
    )
    post_code = models.CharField('Post Code',
    max_length=200,
    )
    course_description = models.TextField('Description')
    date = models.DateField('Date')

    start_time = models.TimeField('Starting time')
    finish_time = models.TimeField('Finishing time')
    duration = models.IntegerField('Number of hours')
    CPD = models.IntegerField('CPD points')
    link = models.CharField('Link', max_length=200)
    category = models.ForeignKey(Categories)
    gen_cat = models.ForeignKey(Gen_Categories)
    location = models.ForeignKey(Gen_Location)
    cost = models.FloatField('Cost')

И у меня есть следующее основанное на классе представление. Функции, которые там, как date_screen() были записаны в другом файле и импортированы, они работают в моих представлениях на основе функций. Проблема в том, что он продолжает говорить, что Course не определено. Если вы можете найти что-то еще не так с представлением на основе класса, пожалуйста, дайте мне знать. Я могу разработать представление, основанное на классах, которое извлекает все данные, но на данный момент больше нюансов.

class Courses_By_Location(ListView):
    template_name = 'courses/course_list.html'
    model = Course

    def get_queryset(self):
        self.Course = get_object_or_404(Course, name=self.args[0].order_by('date'))
        raw_courses = Course.objects.filter(location=self.location)
        courses = date_screen(raw_courses)
        categories = category_screen(courses)
       locations = location_screen(courses)

    def get_context_data(self, **kwargs):
        context = super(searchView, self).get_context_data(**kwargs)
    context.update({'locations': self.locations,
               'categories': self.categories,
               'courses': self.courses,
               'count': self.count,})
        return context

2 ответа

Решение

Я не совсем уверен, в чем проблема, но похоже, что вы помещаете некоторые вещи в неподходящие места.

# URLs
url(
    r'^local/(?P<location>[-\w]+)/$',
    views.Courses_By_Location.as_view(),
    name='by_location',
),

# Views
class Courses_By_Location(ListView):
    model = Course
    context_object_name = 'courses'

    def dispatch(self, request, *args, **kwargs):
        self.location = kwargs.get('location', 'DEFAULT-LOCATION')
        return super().dispatch(request, *args, **kwargs)

    def get_queryset(self):
        # `date_screen` must return a QuerySet
        return date_screen(
            # assuming the `Gen_Location` model has a `name` field
            super().get_queryset().filter(location__name__iexact=self.location),
        )

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        context['locations'] = location_screen(self.object_list)
        context['categories'] = category_screen(self.object_list)
        context['count'] = self.object_list.count()

        return context

Вы импортировали модель из models.py?

Вы должны импортировать модель,

from .models import Course
Другие вопросы по тегам