Мне нужна помощь в структурировании классов модели (какой ключ должен быть внешним ключом или в м2 м2), который поможет пользователю добавить новые "SchPrograms" с его параметрами (с использованием таблицыinline) со страницы администратора Djanog.Мне удается создать страницу, где каждый может добавить SchPrograms с параметрами.
В настоящее время параметры располагаются ниже поля SchPrograms (список раскрывающихся списков, в которых пользователь может выбрать различные VisVisitParameters для SchPrograms из списка раскрывающегося списка).
Но я хотел иметь три filter_horizontal 1-й filter_horizontal будет иметь существующие SchPrograms , когда я выберу любую из SchPrograms из этого спискаОн будет выдавать уже присвоенные VisVisitParameters во 2-м filter_horizontal для этого "SchPrograms" , а затем в 3-м filter_horizontal пользователь может выбрать VisVisitParameters имена для SchPrograms, которые в настоящее время создаются.
Прямо сейчас у меня не может быть даже одного filter_horizontal , поскольку я использую поле fk, но когда я изменил его m2mзатем у меня возникли проблемы с доступом к переменным из других моделей.
Возможно ли иметь более 2 filter_horizontal или есть ли другой способ сделать это?
#models.py
class SchPrograms(models.Model):
program_id = models.AutoField(primary_key=True)
program_name = models.CharField(max_length=200, blank=True, null=False)
def __str__(self):
return u'%s %s %s' % (self.program_id,'-', self.program_name)
class VisVisitParameters(models.Model):
vparameter_id = models.AutoField(primary_key=True)
parameter_name = models.CharField(max_length=300, blank=True, null=True)
parameter_description = models.TextField(blank=True, null=True)
def __str__(self):
return u'%s %s %s' % (self.vparameter_id,'-', self.parameter_name)
class VisVisitParameterMappings(models.Model):
vp_map_id = models.AutoField(primary_key=True)
vparameter = models.ForeignKey('VisVisitParameters', models.DO_NOTHING, blank=True, null=True)
program = models.ForeignKey('SchPrograms', models.DO_NOTHING, blank=True, null=True)
def __str__(self):
return str(self.vparameter)
#admin.py
class parameterInline(admin.TabularInline):
model = VisVisitParameterMappings
class ProgramAdmin(admin.ModelAdmin):
list_display = ('program_id','program_name','is_active')
inlines = [
parameterInline,
]