Отобразить три модели на одной странице панели администратора Django
Я делаю страницу для просмотра расписания занятий студентов. Есть 3 модели:
SelectGroup
SelectDate
Lessons
Мне нужно отобразить их в панели администратора Django таким образом, чтобы SelectDate
была вложенной моделью к модели SelectGroup
, а модель Lessons
была вложенной моделью SelectDate
, то есть получается модель в модели в модели.
Вот код моделей
class SelectGroup(models.Model):
selgroup = models.OneToOneField(Groups,
on_delete=models.CASCADE,
verbose_name='Група',
unique=False)
main = models.ForeignKey('Main', on_delete=models.CASCADE)
lesson = models.ForeignKey('Lessons', on_delete=models.CASCADE)
class Meta:
verbose_name = 'Розклад'
verbose_name_plural = 'Розклад'
def __str__(self):
return self.selgroup.groups
class SelectDate(models.Model):
dateday = models.DateField(verbose_name='Дата',
unique=False)
class Meta:
verbose_name = 'Дата'
verbose_name_plural = 'Дата'
def __str__(self):
return self.dateday.strftime('%Y-%m-%d')
class Lessons(models.Model):
groups = models.CharField(max_length=10,
default="----",
unique=False)
date = models.DateField(verbose_name='Дата',
default=current_time,
unique=False)
account = models.IntegerField(default=0, blank=True, null=True,
verbose_name='Пара №',
unique=False,
validators=[MinValueValidator(1),
MaxValueValidator(6)])
start_time = models.TimeField(verbose_name='Початок пари',
unique=False)
end_time = models.TimeField(verbose_name='Кінець пари',
unique=False)
discipline = models.CharField(max_length=100,
verbose_name='Дисципліна',
unique=False)
audience = models.CharField(max_length=5,
verbose_name='Аудиторія',
unique=False)
teacher = models.CharField(max_length=150,
verbose_name='Викладач',
unique=False)
class Meta:
verbose_name = 'Розклад'
verbose_name_plural = 'Розклад'
def __str__(self):
return ''
Пробовал следующий вариант регистрации:
class LessonsInline(admin.StackedInline):
model = Lessons
fields = ['account', 'start_time', 'end_time', 'discipline', 'audience', 'teacher']
extra = 1
class SelectDateInline(admin.StackedInline):
model = SelectDate
inlines = [LessonsInline]
fields = ['dateday']
extra = 0
class SelectGroupAdmin(admin.ModelAdmin):
exclude = ['lesson']
inlines = [SelectDateInline]
admin.site.register(SelectGroup, SelectGroupAdmin)
Тогда получается, что инлайн модель Lessons
не отображается в модели SelectDate
, помогите решить данную проблему.
Источник: Stack Overflow на русском