Mam dwa modele w Django: User (wstępnie zdefiniowany przez Django) i UserProfile. Te dwa są połączone za pomocą klucza obcego.Tworzenie widoku, który zapisuje obiekty User i UserProfile w Django
models.py:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True, related_name="connect")
location = models.CharField(max_length=20, blank=True, null=True)
Używam UserCreationForm (pre-definiowane przez Django) do modelu użytkownika i stworzył inną formę dla UserProfile w forms.py
#UserCreationForm for User Model
class UserProfileForm(ModelForm):
class Meta:
model = UserProfile
exclude = ("user",)
I załaduj obie te formy do szablonu, registration.html, aby klient serwisu mógł wprowadzić dane o polach zawartych w obu modelach (np. "first_name", "last_name" w modelu użytkownika, "location" w modelu UserProfile).
Dla mojego życia nie mogę wymyślić, jak utworzyć widok dla tego formularza rejestracyjnego. To, co do tej pory próbowałem, utworzy obiekt User, ale nie będzie kojarzyć innych informacji, takich jak lokalizacja w odpowiednim obiekcie UserProfile. Czy ktoś może mi pomóc? To, co obecnie mam:
def register(request):
if request.method == 'POST':
form1 = UserCreationForm(request.POST)
form2 = UserProfileForm(request.POST)
if form1.is_valid():
#create initial entry for User object
username = form1.cleaned_data["username"]
password = form1.cleaned_data["password"]
new_user = User.objects.create_user(username, password)
# What to do here to save "location" field in a UserProfile
# object that corresponds with the new_user User object that
# we just created in the previous lines
else:
form1 = UserCreationForm()
form2 = UserProfileForm()
c = {
'form1':UserCreationForm,
'form2':form2,
}
c.update(csrf(request))
return render_to_response("registration/register.html", c)
http://stackoverflow.com/questions/569468/django-multiple-models-in-one-template-using-forms –