我正在開發一個Django驅動的網站中,我有三個類型的用戶:如何在Django中擁有3種類型的用戶?
- 教師:可以增加訓練階段報價,
- 生:可以申請一個訓練階段的報價,
- 公司:也可以添加培訓階段優惠。
我主要問題是如何有三種類型在Django的用戶,這樣我可以有三種登錄?
我目前的解決方案是,我有三種模式的每種類型的用戶(模特學生,模特老師,模特公司)。我也有三種不同的形式,允許公司,教師或學生註冊。當我在視圖中正確編譯表單時,我手動創建(通過編碼),用戶和我手動創建相對模型的對象,然後保存該對象。
的主要問題是,我創建的用戶不會被有一種類型的分化:
class Azienda(models.Model):
nome=models.CharField(max_length=200)
sede=models.CharField(max_length=200)
pIva=models.CharField(max_length=30)
email = models.EmailField()
user = models.OneToOneField(User)
#company model, in models.py
#company form, in forms.py
class AziendaForm(forms.Form):
nome = forms.CharField(max_length=200)
sede = forms.CharField(max_length=200)
pIva = forms.CharField(max_length=30)
email = forms.EmailField()
user = forms.CharField(max_length=100)
password = forms.CharField(widget=forms.PasswordInput)
#view of company registration form
def registratiAziende(request):
if request.method=='POST':
form=AziendaForm(request.POST)
if form.is_valid():
form['nome'].value()
azienda=Azienda()
azienda.nome=form['nome'].value()
azienda.sede = form['sede'].value()
azienda.pIva = form['pIva'].value()
azienda.email=form['email'].value()
#I create a user user=User.objects.create_user(form['user'].value(),form['email'].value(),form['password'].value())
azienda.user=user
azienda.save()
#I save the company object
return redirect('myapp:index')
else:
form= AziendaForm()
return render(request, 'myapp/registratiAziende.html', {'form':form})
爲用戶創建單個表單併爲該用戶的角色添加一個新字段,根據該字段您可以在教師,學生或公司中創建新條目。或者,您可以擴展Django的默認'User'模型以在其中添加一個新的字段'角色',通過它您可以區分。 –