訪問關係數據庫這是我forms.py:Django的 - 鑑於
class RegistrationForm(forms.Form):
PET_CHOICES = (
('none','---'), ('dog', 'Dog'),
)
username = forms.CharField()
email = forms.EmailField()
password1 = forms.CharField()
birthdate = forms.DateField(widget=extras.SelectDateWidget)
pet = forms.ChoiceField(choices=PET_CHOICES)
這是我的models.py:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class UserExtended(models.Model):
user = models.ForeignKey(User)
pet = models.CharField(max_length=40)
age = models.PositiveSmallIntegerField()
正如你所看到的,這種模式擴展了默認的Django用戶模型。現在,這是我對哪個註冊用戶的看法:
def registerView(request):
form = RegistrationForm()
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = User.objects.create_user(
username=form.cleaned_data['username'],
password=form.cleaned_data['password1'],
email=form.cleaned_data['email']
)
user.userextended_set.pet=form.cleaned_data['pet']
user.userextended_set.age=form.cleaned_data['birthdate']
return HttpResponseRedirect('/')
我想知道,這段代碼是否正確?
user.userextended_set.pet=form.cleaned_data['pet']
user.userextended_set.age=form.cleaned_data['birthdate']
上面的兩行代碼,我試圖添加到用戶的ForiegnKey UserExtended模型。我想我做錯了什麼,因爲創建和用戶後,我驗證和登錄用戶在使用Django提供的功能
authenticate()
和
login()
,如果我把這個在我模板,Django的重定向到
<p>your pet is {{ user.userextended_set.pet }}</p>
登錄後不顯示其他的
{{ user.userextended_set.pet }}
。它只是說:
your pet is
。任何想法爲什麼它不顯示任何東西? {{user.userextended_set.pet}}
另外,你究竟是什麼意思?「只要你能管理(非)重複的創建,你就好了。」? – user2719875
我的意思是你應該確保你的應用程序不允許爲給定的用戶多次創建'UserExtended'對象。 – karthikr