Търсих едно и също нещо в мрежата и получих много отговори, но някои успяха да работят с някоя от тях.
Таблица:
- Доклад: reportType (чужд ключ от ReportCategory), име, описание
- Категория на отчета: име, описание
forms.py
class ReportForm_insert(forms.ModelForm):
class Meta:
model=Report
invent = ReportCategory.objects.all()
print invent
reportType_id = forms.ModelMultipleChoiceField(queryset = invent)
fields =("name","description",)
model.py
class ReportCategory(models.Model):
name = models.CharField(max_length=20)
description = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class Report(models.Model):
reportType = models.ForeignKey(ReportCategory)
name = models.CharField(max_length=200)
description = models.CharField(max_length=300)
def __unicode__(self):
return self.name
Сега, в клас "мета", се опитвам да направя две неща:
Първо, популяризиране на падащото меню Тип на отчетасъс стойността от колоната "име" в таблицата с отчетни таблици. На второ място, когато всички други полета във формуляра се попълват от потребителя и бутонът е натиснат, данните в полетата трябва да бъдат запазени Таблицата с отчети, като се има предвид ограничението на чуждия ключ, което има от таблицата на отчетната категория.
Отговори:
2 за отговор № 1reportType = models.CharField(max_length=200)
Би трябвало:
reportType = models.ForeignKey(ReportCategory)
След това върху модела на ReportCategory добавете:
def __unicode__(self):
return self.name
След това на формуляра си нямате нужда от други неща
0 за отговор № 2
Използвайте InlineFormsets.
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author)
title = models.CharField(max_length=100)
>>> from django.forms.models import inlineformset_factory
>>> BookFormSet = inlineformset_factory(Author, Book)
>>> author = Author.objects.get(name=u"Mike Royko")
>>> formset = BookFormSet(instance=author)
0 за отговор № 3
в forms.py
class ReportForm_insert(forms.ModelForm):
class Meta:
model=Report
Това е. Джанго автоматично разбира, че трябва да се създаде падане, когато го обявяваме за чужд ключ в модела.