/ / Cuadro desplegable en django que se rellena desde una columna de tabla de base de datos - django

Cuadro desplegable en django que se completa desde una columna de tabla de base de datos - django

Busqué lo mismo en la red y obtuve muchas respuestas, pero no sé cómo trabajar con cualquiera de ellas.

Mesa:

  1. Informe: reportType (clave externa de ReportCategory), nombre, descripción
  2. Categoría del informe: nombre, descripción

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

Ahora, dentro de la meta clase estoy tratando de hacer dos cosas:

En primer lugar, rellenando el cuadro desplegable Tipo de informecon el valor de la columna "nombre" de la tabla ReportCategory. En segundo lugar, cuando el usuario rellena todos los demás campos del formulario. y se presiona el botón, los datos en los campos deben guardarse en La tabla de informes teniendo en cuenta la restricción de clave externa que tiene de la tabla ReportCategory.

Respuestas

2 para la respuesta № 1
reportType = models.CharField(max_length=200)

Debiera ser:

reportType = models.ForeignKey(ReportCategory)

Luego, en el modelo ReportCategory agregue:

def __unicode__(self):
return self.name

Entonces en tu formulario no necesitas ninguna otra cosa.


0 para la respuesta № 2

Utilice 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 para la respuesta № 3

En forms.py

class ReportForm_insert(forms.ModelForm):
class Meta:
model=Report

Eso es. Django entiende automáticamente que se debe crear un menú desplegable cuando lo declaramos como clave externa en el modelo.