Wpis z mikrobloga

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 mój problem wynika z tego, że nie do końca rozumiem jeszcze jak działają CBV i służą one raczej to prostych, powtarzalnych czynności, a ta nie wpisuję się w ten schemat?

#django
  • 4
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:
Modele:
https://pastebin.com/k5dunifr

-- Czy istnieje model usera bez guardiana?
--- Używasz customowego usera i masz ustawione AUTHUSERMODEL w settings.py?
Tak. AUTHUSERMODEL = 'accounts.User'

Widziałem też podejścia, żeby wszystko zrobić w Userze i każde Modele, które potrzebują Usera rozróżniać poprzez

is_guardian = models.BooleanField
ale co wtedy, z różnymi polami, w zależności od potrzeb Modelu? wymuszać w formularzu (required fields), jakie pola są potrzebne, a jakie nie?
@gaxda: Technicznie rzecz biorąc to masz kilku użytkowników z różnymi uprawnieniami i polami...

- Zrobiłbym jeden model użytkownika
- Jeżeli nie chcesz śmiecić w modelu User, to stworz mu FK do modelu Address i tam wywal niepotrzebne pola
- Zastanow sie czy nie chcesz uzyc wbudowanych permissionow

Ew sprawdz ponizszy link abys stworzyl se pseudomodele Teacher/Guardian etc
https://bocribbz.com/post/59546737288/the-same-table-referenced-by-multiple-django-models
Moga byc przydatne jezeli bedziesz korzystal duzo z ModelForm itd
@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 :/

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)