【发布时间】:2017-03-19 05:16:50
【问题描述】:
我正在使用 Django 1.10.*。这是我的用户资料模型:
class student(models.Model):
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE)
state = models.CharField(max_length=21, null=True, blank=True, choices=in_states.STATE_CHOICES)
city = models.CharField(max_length=21, null=True, blank=True)
date_joined = models.DateTimeField(default=timezone.now)
educational_role = models.CharField(max_length=39, choices=EDUCATIONAL_ROLE)
institute = models.ForeignKey(educational_institute, null=True, blank=True)
language = models.CharField(max_length=8, choices=LANGUAGES)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
student.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
当我为学生创建表单类并使用它在我的视图中创建一个扩展 FormView 类的视图类时,将form 上下文传递给 HTML 模板,如下所示:
forms.py:
class RegistrationForm(forms.ModelForm):
class Meta:
model = student
fields = ['user', 'state', 'city', 'educational_role', 'institute', 'language']
views.py:
class Register(FormView):
template_name = 'searcher/register.html'
form_class = RegistrationForm
def get_context_data(self, **kwargs):
context = super(Register, self).get_context_data(**kwargs)
context['applink'] = applink
context['forumlink'] = forumlink
return context
那么我需要如何修改它,以便注册表要求User 模型的username、firstname、email 以及student 模型添加的字段,并可以选择创建一个新的educational_institute,如果它不存在?
【问题讨论】:
标签: python django django-forms django-templates django-views