I have a model, called Student, which has some fields, and a OneToOne relationship with a user (django.contrib.auth.User).
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)
Then, I have a ModelForm for that model
class StudentForm (forms.ModelForm):
class Meta:
model = Student
Using the fields attribute in class Meta, I've managed to show only some fields in a template. However, can I indicate which user fields to show?
Something as:
fields =('personalInfo','user.username')
is currently not showing anything. Works with only StudentFields though/
Thanks in advance.
Best Answer
A common practice is to use 2 forms to achieve your goal.
A form for the
User
Model:A form for the
Student
Model:Use both those forms in your view (example of usage):
Render the forms together in your template:
Another option would be for you to change the relationship from
OneToOne
toForeignKey
(this completely depends on you and I just mention it, not recommend it) and use theinline_formsets
to achieve the desired outcome.