Ниже перечислены зарегистрированные модели администратора:
models.py
class TestMain(models.Model):
course = models.ForeignKey(Course, on_delete=models.PROTECT)
question = models.TextField(max_length=200, unique=True)
## If I uncomment below and comment question attr in TestChild it doesnt work
# answerfk = models.ForeignKey(TestAnswer, related_name="answerfk", on_delete=models.PROTECT)
class Meta:
verbose_name = 'Question'
verbose_name_plural = 'Questions'
def __str__(self):
return '{} - QUESTION: {}'.format(self.course, self.question)
class TestChild(models.Model):
## If I comment below and uncomment answerfk attr in TestMain it doesnt work
question = models.ForeignKey(TestMain, related_name="questionfk", on_delete=models.PROTECT)
answer = models.CharField(max_length=250, default=None)
correct_answer = models.BooleanField(verbose_name="correct answer", default=False, editable=True)
answer_comment = models.CharField(max_length=250, unique=False, default=None)
internal_comments = models.CharField(max_length=250, unique=False, default=None)
def __str__(self):
return '{} ANSWER: {} {}'.format(self.question.question, self.answer, self.correct_answer)
forms.py
from django import forms
class TestMainForm(forms.ModelForm):
pass
class TestChildForm(forms.ModelForm):
pass
admin.py
class TestChildInline(admin.TabularInline):
model = TestChild
fk_name = "question"
extra = 0
def get_formset(self, request, obj=None, **kwargs):
TestChildInline.form = type(
'TestChildInlineAlt', (TestChildForm, ), {})
formset = super(TestChildInline, self).get_formset(request, obj, **kwargs)
return formset
class TestMainAdmin(admin.ModelAdmin):
inlines = [TestChildInline, ]
admin.site.register(TestMain, TestMainAdmin)
Цель состоит в том, чтобы иметь форму TestMain
и динамическое добавление c нескольких форм для TestChild
. Проблема, с которой я сталкиваюсь, заключается в том, что если у меня есть внешний ключ (models.ForeignKey) от TestMain
(answerfk
) до TestChild
(answer
attr), тогда строка для TestChildInline
выдает ошибку, говорящую, что есть нет внешнего ключа в TestChild
для TestMain
.
Я хочу иметь fk в TestMain для TestChild, как мне создать форму для TestMain & TestChild, когда TestChild является динамическим c опция ввода нескольких форм - в линию. Я говорю о TestMain-> TestChilds с OneToManyRelation. У меня есть требование выборки TestMain с TestChilds для представления / формы, которым необходимо ввести данные для другой модели под названием TestResults. Элемент TestResults представляет собой данные из обеих данных формы TestMain + TestChilds, которые вводят ее в модель TestResults.
Форма в настоящее время содержит несколько дополнений для таких ответов (TestChild
[question
-> (models.ForeignKey(TestMain)
) ):
![enter image description here](https://i.stack.imgur.com/8NGEs.png)