Tengo un modelo, llamado Estudiante, que tiene algunos campos, y una relación de OneToOne con un usuario (django.contrib.auth.User).Formulario modelo django. Incluir campos de los modelos relacionados
class Student(models.Model):
phone = models.CharField(max_length = 25)
birthdate = models.DateField(null=True)
gender = models.CharField(max_length=1,choices = GENDER_CHOICES)
city = models.CharField(max_length = 50)
personalInfo = models.TextField()
user = models.OneToOneField(User,unique=True)
Entonces, tengo una ModelForm para ese modelo
class StudentForm (forms.ModelForm):
class Meta:
model = Student
El uso de los campos de atributo en la clase Meta, he logrado mostrar sólo algunos campos en una plantilla. Sin embargo, ¿puedo indicar qué campos de usuario mostrar?
Algo como:
fields =('personalInfo','user.username')
actualmente no se muestra nada. Funciona solo con StudentFields/
Gracias de antemano.
si el modelo del estudiante heredó el modelo de usuario al que sólo necesita una ModelForm. –
@KevinL., Sería genial si elaboras esto en una respuesta :-) – cel
@cel AFAIK, no ha habido desarrollos como este para hablar en el núcleo de Django. Una solución 'automática' aquí probablemente no sea trivial e involucre escribir sus propias clases de modelos a medida o mixins para hacerlo. Esto sería significativamente más complejo (y podría decirse que más frágil) que utilizar los métodos sugeridos. Una posible solución podría estar contenida en [esta respuesta] (https://stackoverflow.com/a/41559015/5747944) que describe una mezcla ModelForm que permite definir un segundo modelo 'hijo' y se dice que es compatible con vistas genéricas. – sytech