Cześć! Męczę się z jednym tematem od kilku dni. Mam Custom Usera do logowania oraz modele, które mają Usera jako pk.
class Guardian(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) Chciałbym teraz stworzyć taki formularz, który wyświetli pola Usera i pola Guardiana, stworzy Usera i przypiszę go do nowo powstałego Guardiana ( w jednym request.POST). Czy powinienem korzystać z ModelForm z parametrem:
class Meta: model = Guardian czy tworzyć całkowicie formularz od początku? Prawdopodobnie
Nie będzie łatwiej przenieść pola guardiana na usera? Czy istnieje model usera bez guardiana? Używasz customowego usera i masz ustawione AUTHUSERMODEL w settings.py?
Tworzysz dwa formularze na stronie, najpierw sprawdzasz ten od Usera, jak jest poprawny to sprawdzasz guardiana, jak jest poprawny to tworzysz Usera i Guardiana i przypisujesz usera do guardiana... ale raczej w FBV bym to zrobił
@Lunatik: dobra, skorzystałem z tej metody, niby początkowo korzystałem z tego sposobu tworzenia Multiple User Types, ale jako ominąłem opracowanie rejestacji :/
class Guardian(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
Chciałbym teraz stworzyć taki formularz, który wyświetli pola Usera i pola Guardiana, stworzy Usera i przypiszę go do nowo powstałego Guardiana ( w jednym request.POST). Czy powinienem korzystać z ModelForm z parametrem:
class Meta:
model = Guardian
czy tworzyć całkowicie formularz od początku?
Prawdopodobnie
Czy istnieje model usera bez guardiana?
Używasz customowego usera i masz ustawione AUTHUSERMODEL w settings.py?
Tworzysz dwa formularze na stronie, najpierw sprawdzasz ten od Usera, jak jest poprawny to sprawdzasz guardiana, jak jest poprawny to tworzysz Usera i Guardiana i przypisujesz usera do guardiana... ale raczej w FBV bym to zrobił
How to Implement Multiple User Types with Django
Moja implementacja:
https://pastebin.com/Ry54GWHB
Zastanawia mnie tylko do czego służy w context to 'usertype' jak i tak w formularzu robi::
user.is_student = True
def get_context_data(self, **kwargs):
kwargs['user_type'] = 'student'
return super().get_context_data(**kwargs)