Пиша, следователно съм.
Абонирайте се за този блог
Следвайте по имейл
Филтрирайте избора на полето ManyToMany в Django ModelForm
- Вземете връзка
- електронна поща
- Други приложения
В настоящия ми проект се изисква да създам форма, в която определена група потребители може да създава само с определен вид данни. Например:
- Потребител 1 от група А може да създава обекти на учител само с набор от ученици (номер на ученик, да кажем ['123', '234'])
- Потребител 2 от група Б може да създава обекти на учител само с набор от ученици (students_numbers, ['345', '678'])
Ето как изглежда моделът:
models.py:
от модели за импортиране на django.db
клас Студент(модели. Модел):
student_number = models.CharField (max_length = 6, primary_key = True)
student_name = models.CharField (max_length = 20)
def __unicode __ (самостоятелно):
върнете self.student_name
клас Meta:
поръчка = ['студент_номер']
клас Учител(модели. Модел):
name = models.CharField (max_length = 50)
students = models.ManyToManyField (Student)
def __unicode __ (самостоятелно):
върнете u '% s'% (self.name)
клас Мета:
подреждане = ['име']
verbose_name = "Учители"
За да мога да генерирам формуляр и филтър по student_number, просто трябва да дефинирам функцията си __init__ за TeacherForm:
от django.forms импортиране на ModelForm
от myapps.models внос Учител, Студент
клас Форма за учител(ModelForm):
def __init __ (self, student_set, * args, ** kwargs):
супер (TeacherForm, самостоятелно) .__ init __ (* args, ** kwargs)
self.fields ['students']. queryset = Student.objects.filter (student_number__in = student_set)
клас Meta:
модел = Учител
полета = ['name', 'students']
изключване = []
И така, в изгледа първо проверявам потребителската група, за да реша от кой набор ученици този потребител може да създава, след което го предавам на екземпляра на формуляра:
- Ползи за здравето на тиквените семки за отслабване GNC - DA-Регионален полеви офис III
- FreeTrial) Номер 1 Калмарите са здравословни за работа за отслабване DA-Регионално полево бюро III
- Dairy Queen Nutrition Facts Здравословен избор на меню за всяка диета
- Давос 2020 предлага устойчив избор на храна за гостите Световен икономически форум
- Кристиан Бейл; s Избор на тренировки, диети и добавки