2017-09-20 1 views
0

Ich habe eine Anmeldeseite mit eingebautem UserCreationForm von django erstellt.Verwenden des Fremdschlüssels des UserCreationForm-Modells Benutzer

signup.html

class UserCreationForm(UserCreationForm): 
    email = EmailField(label=_("Email address"), required=True, help_text=_("Required.")) 

    class Meta: 
     model = User 
     fields = ("username", "email", "password1", "password2") 

    def save(self, commit=True): 
     user = super(UserCreationForm, self).save(commit=False) 
     user.email = self.cleaned_data["email"] 
     if commit: 
      user.save() 
     return user 

Aber ich brauche auch andere Tabellen in models.py zu machen. Also wenn in einer anderen Tabelle category Ich muss einen Fremdschlüssel des Primärschlüssels dieses eingebauten Benutzers UserCreationForm machen. Was ist der primäre Schlüssel dabei?

models.py

class category(models.Model): 
    uid = models.ForeignKey(#) 
    cname = models.CharField(max_length=20) 

    def __unicode__(self): 
     return u"{} {}".format(self.uid, self.cname) 
    class Meta: 
     db_table = "category" 

Was schreibe ich anstelle von # ??

+1

Sie sollen den Unterschied zwischen einer Form und einem Modell lernen. Die Form beeinflusst das zugrunde liegende Modell in keiner Weise. Sie können mehrere verschiedene Formulare verwenden, um einen Benutzer zu erstellen, die alle dasselbe Modell verwenden. Ihr Benutzermodell ist immer noch nur ein Standard-Django-Benutzer. Daher sollte Ihr Fremdschlüssel auf das Modell "Benutzer" zeigen. Importieren Sie einfach 'User' und erstellen Sie einen Fremdschlüssel, oder besser, verwenden Sie' settings.AUTH_USER_MODEL', welches standardmäßig der Django 'User' ist, aber möglicherweise von Ihnen in Ihr benutzerdefiniertes Benutzermodell geändert wird. – dirkgroten

+0

habe es Sir !!! danke. – Shefali

Antwort

1

Gerade Punkt zum User Modell:

from django.contrib.auth import User 
uid = models.ForeignKey(User) 

oder besser, im Fall sollten Sie das User-Modell anpassen:

from django.conf import settings 
uid = models.ForeignKey(settings.AUTH_USER_MODEL) 
Verwandte Themen