1

голосов
0

ответ
172

Просмотры

Django форма с инлайн / вложенными данными

Я пытаюсь создать редактор для вопроса, тогда вопрос может иметь несколько файлов, связанных с ним. Я пытался заставить его работать с inline_formsets, но я не могу заставить его работать правильно. Форма Я пытаюсь создать для Вопроса в то время как я хочу, чтобы пользователь, чтобы иметь возможность загружать файлы на вопрос о том же виде. models.py DEF Вопрос (models.Model): название = models.CharField ( 'Title', max_length = 200) ... Защита AdditionalData (models.Model): вопрос = models.ForeignKey (Вопрос, related_name = 'additionalData`, on_delete = models.CASCADE) закачивать = models.FileField ( 'Data', upload_to = ...) forms.py класс QuestionForm (forms.ModelForm) класс Meta: модель = вопрос поля # = '__all__' для примера только AdditionalDataFormset = формы. non_form_errors}} {% для additional_data в additional_data_formset%} {{additional_data | хрустящей}} {% ENDFOR%} Отправить По некоторым причинам, когда я использую встроенный FormSets «Отправить» кнопка не работает (ничего не происходит, когда я нажимаю его) , При попытке заставить отправить форму (с помощью JQuery OnClick кнопки отправки) отбрасывается эта ошибка: «ManagementForm данные отсутствуют или были подделаны» Я не могу понять, почему это происходит. Что касается гнездового метода, я не смог найти пример, который демонстрирует его только две модели, так что я не уверен в том, как использовать его в этом обстоятельстве. Как вы можете видеть выше, я сделал звонок в «management_form» отлично, так что я не знаю, почему это происходит. Дополнительная информация: Вопрос может иметь любое количество файлов (экземпляры AdditionalData), связанное с ним. Любая информация на выше ошибки или советы о том, как реализовать такую ​​форму, которая может иметь переменное число подформ было бы весьма признателен.
steven landau
2

голосов
1

ответ
88

Просмотры

Entity Framework с ASP.NET возвращая нуль для один-ко-многим коллекции

Я пытаюсь создать один ко многим отношений со следующими объектами. с использованием системы; используя System.Collections.Generic; используя System.Linq; используя System.Threading.Tasks; используя System.Data.Common; используя System.ComponentModel.DataAnnotations.Schema; используя Microsoft.EntityFrameworkCore; пространства имен Program.Models {общественного класса Log {общественности INT ID {получить; задавать; } Публичная строка Источник {получить; задавать; } Публичная строка Title {получить; задавать; } Общественного DateTime Отметка {получить; задавать; } общественного ICollection Категории {получить; задавать; } Общественности Log () {this.Categories = новый список (); }} Общественного класса Категория {общественного ИНТ ID {получить; задавать; } Строка публичный ключ {получить; задавать; } Публичная строка Значение {получить; задавать; }} LogDBContext общественного класса: DbContext {общественного DbSet Бревна {получить; задавать; } общественного DbSet Категории {получить; набор;} общественного LogDBContext (варианты DbContextOptions): базовый (опция) {} общественный LogDBContext (): базовый () {}}} При запуске, я ставлю следующие объекты в варе базы данных cat1 = новую категорию {Key = "семена" , Значение = "семя"}; вар cat2 = новая Категория {Key = "seed2", Value = "seed2"}; вар журнал = новый Log {Source = "семя", Отметка = DateTime.Now, Title = "семя"}; log.Categories.Add (cat1); log.Categories.Add (cat2); context.Logs.Add (журнал); context.SaveChanges (); Я получаю все объекты при помощи вызова функции: [HttpGet] [Маршрут ( "GETALL")] общественность IEnumerable GETALL () {вернуться _context.Logs.Include (с => c.Categories) .AsEnumerable (); } Я попытался положить виртуальное ключевое слово в коллекции категорий (в классе Log), но независимо от того, что я пытаюсь я получаю нулевое назад для категорий с сервера. [{ "ID": 0, "источник": "семя", "название": "семя", "Отметка время": "2018-03-19T13: 21: 27,0034628", "Категория": нулевая}] Любая помощь будет в значительной степени оценены. Edit: На основе обратной связи я создал конструктор для журнала, который инициализирует ICollection. общественности Log () {this.Categories = новый список (); } Теперь, вместо NULL я получаю пустой список [{ «ID»: 0, «источник»: «семя», «название»:»
steven landau