Использование отфильтрованных табличных значений в качестве вариантов выбора в Django - PullRequest
0 голосов
/ 30 января 2019

Я использую django 2.1.5v и создаю модели, которые будут использоваться в разделе администратора, и пытаюсь избежать создания отдельного представления для того же самого.Вот мои модели:

class Schedule(models.Model):
    instructor = models.ForeignKey(Instructors, on_delete=None, to_field='username')
    start_time = models.DateTimeField('Start Time', default=None)
    course_name = models.ForeignKey(Course, unique=False, on_delete=None, to_field='course_name')

    def __str__(self):
        return 'Course {}, Start {}, End {} Room {}'.format(self.course_name, self.start_time, self.room_number)

Модель посещаемости выглядит следующим образом:

class InstructorAttendance(models.Model):
    instructor = models.CharField(max_length=200, editable=False)
#    course_name = LIST PICKED FROM SCHEDULE BASED ON INSTRUCTOR NAME
    lecture_date = models.DateField('Lecture Date', default=None, auto_created=False, blank=False, null=False)

    def __str__(self):
        return '{} Conducted'.format(self.lecture_date)

Я хочу атрибут course_name в модели InstructorAttendance, который будет списком course_nameвыбрано из списка созданных / доступных расписаний.Если его там нет, то в раскрывающемся списке не должно быть никакой опции.Это будет в разделе администратора, и я зарегистрировал модель как admin.site.register(InstructorAttendance).Я пытаюсь использовать выбор, но, кажется, это невозможно.Кто-нибудь может помочь мне с этим?

** Обновление Теперь я могу получить список всех значений из модели расписания.Однако я хочу отфильтровать значения course_name на основе instructor, что совпадает со значением request.user из маршрута администратора.Кто-нибудь, кто пробовал это?Хотите избежать изменения формы.Я считаю, что это должно быть возможно?Я не могу получить предложения в https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin правильно работающей форме clean_data.

1 Ответ

0 голосов
/ 30 января 2019

Ваши InstructorAttendance модели должны также иметь отношение к Course.

class InstructorAttendance(models.Model):
    course = models.ForeignKey(Course)
    # ...

, а затем вы должны написать пользовательскую форму администратора для InstructorAttendance и заставить поле курса использовать Select виджет инициализирован с существующими / доступными курсами.

Подробнее см. ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...