Я хотел бы обратиться за помощью и руководством по моей проблеме.Django: сохранение динамических форм с внешним ключом
У меня есть следующие модели:
class myinfo(models.Model):
name = models.CharField(max_length=30, null=True)
class mynumbers(models.Model):
fkey = models.ForeignKey("myinfo")
Job_Position = models.CharField(max_length=30, null=True)
mynumbers
модель динамически сгенерированные с помощью django-dynamic-formset.
Моя форма
class info(ModelForm):
name= forms.CharField(max_length=20)
class Meta:
model = APPLICANT_DATA
fields = ('name',)
class numbers(ModelForm):
number = forms.CharField(max_length=20)
class Meta:
model = APPLICANT_DATA
fields = ('number',)
Если вы хотите, чтобы сохранить динамические поля формы, вы должны сделать это в представлениях
for field in formset:
field.save()
Мои взгляды:
def index(request):
aformset = formset_factory(numbers)
formset = aformset(request.POST)
form = info(request.POST)
if request.method == 'POST':
if form.is_valid():
if formset.is_valid():
for field in formset:
formset.save()
form.save()
Но проблема начинается когда мое динамически генерируемое поле имеет внешний ключ (mynumbers
), который вызывает ошибку must be a myinfo instance
. Как бы сохранить 2 формы, где mynumbers
имеет ключ foriegn для myinfo
? Есть ли лучший способ сделать то, что я сделал? Заранее благодарю вас,
Спасибо за ответ. Всякий раз, когда я пытаюсь сохранить 'formet', он всегда вызывает ошибку, говоря, что нет' formset.save() ', но когда я его зацикливал, он сохраняет, в любом случае, я попробую ответ для немного спасибо. –
Убедитесь, что у вас есть myFormset = inlineformset_factory (models.myinfo, models.mynumbers, form = NumberForm ) за пределами вашего зрения; это необходимо в дополнение к созданию экземпляра вашего набора форм с помощью formet = myFormset (instance = ...) внутри представления. –
Отлично работает, спасибо, как работает 'inlineformset_factory'? –