0
views.py
의 views.py
값을 user
값으로 지정하려고했지만 다음과 같은 오류가 발생하는 것 같습니다. Cannot assign "u'applematter'": "Student.user" must be a "User" instance.
다른 필드에 쓰고있는 것과 일치하도록 숨겨진 필드 사용자를 얻으려면 어떻게해야합니까?Django 1.6의 한 형식에서 다른 형식으로 변수를 전달하는 방법
views.py 파일
from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from famu.forms import *
from django.contrib.auth.decorators import login_required
@login_required(login_url='')
def enroll(request):
if request.method == 'POST':
form = UserForm(request.POST,)
form2 = StudentCreate(request.POST)
if form.is_valid() and form2.is_valid():
new_user = form.save(commit=False)
new_student = form2.save(commit=False)
new_student.user = (new_user.username)
new_user.save()
new_student.save()
return HttpResponseRedirect('/')
else:
form = UserForm# An unbound form
form2 = StudentCreate
return render(request, 'famu/enroll.html', {
'form': form,
'form2': form2
})
forms.py
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms
from famu.models import Student
class UserForm(UserCreationForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email','username',)
class StudentCreate(forms.ModelForm):
class Meta:
model = Student
exclude =['user',]
model.py
from django.db import models
from django.contrib.auth.models import User
class Student(models.Model):
CLASSIFICATION = (
('FR', 'Freshman'),
('SO', 'Sophomore'),
('JR', 'Junior'),
('SR', 'Senior'),
('GR', 'Graduate'),
)
TERMS = (
('F', 'Fall'),
('S', 'Spring'),
('Su', 'Summer'),
)
MAJOR = (
('CS', 'Computer Science'),
('CY', 'Computer Systems'),
('IT', 'Information Technology'),
)
user = models.ForeignKey(User)
student_id = models.IntegerField(primary_key=True, max_length=9)
classification = models.CharField(max_length=2, choices=CLASSIFICATION)
enrolled_year = models.IntegerField(max_length=4)
enrolled_term = models.CharField(max_length=2, choices=TERMS)
major = models.CharField(max_length=2, choices=MAJOR)
street_number = models.IntegerField(max_length=10)
street_name = models.CharField(max_length=45)
apt_number = models.CharField('apt #', max_length=10, blank=True,)
city = models.CharField(max_length=30)
state = models.CharField(max_length=2)
zipcode = models.IntegerField('Zip Code', max_length=5,)
last_modified = models.DateTimeField(auto_now=True)
는 쉽게하지만 당신이 큰 도움이되었습니다 – davidblak3
감사에게 많은 트릭을 할 것 같았다이었다 알고 – davidblak3