2016-04-13 1 views
0

позволяет сказать, что у меня есть модель класс:Как создать несколько экземпляров одного и того же типа поля в django?

class Classroom(models.Model): 
    name = models.CharField(max_length=255,) 
    number_of_students = models.IntegerField() 

и каждый класс может иметь разное количество студентов. Я хотел бы иметь ученик класса, который связан с моделью в классе

class Students(models.Model): 
    student_name = models.CharField(max_length=255) 
    student_gender = models.CharField(max_length=255) 
    classroom = models.ForeignKey(Classroom) 

Я хочу, когда я войти в число студентов, чтобы получить новую форму для каждого студента. Как я могу это сделать?

ответ

0

Сделать number_of_students свойство класса, который просто делает простой запрос для получения его, Тереза ​​нет необходимости хранить произвольное число

@property 
def number_of_students(self): 
    return self.students_set.count() 
0

Я предполагаю, что вы ищете является динамической генерацией формы. Несколько указателей:

1) Лучший способ (IMO) сделать это - использовать некоторую библиотеку javascript для добавления форм на лету. Продолжайте проверять ввод пользователя и добавлять/удалять формы «на лету». Вы можете использовать идентификаторы, такие как form_1, form_2, чтобы различать формы студента.

2) Затем на вашем бэкэнде вы будете перебирать параметры POST и вручную создавать поля ученика (после создания вашего класса). Как вы узнаете, сколько студентов заполнило пользователь (т. Е. Сколько студентов было представлено)? Передайте пользовательский ввод в виде скрытого поля в вашей форме и затем переверните его.

Это позволит вам создать единый вид для создания класса и его учеников.

Другой вариант:

1) Пропустите количество студентов к вашему StudentCreationForm (или ClassCreationForm) в качестве дополнительного аргумента при init. Это требует, чтобы вы приняли количество студентов в качестве вклада от своего пользователя на предыдущей странице (через ajax/post). Нижеследующая ссылка дает отличное руководство по достижению этого:

https://jacobian.org/writing/dynamic-form-generation/

Смежные вопросы