Dyskusja: Konwersja danych w szablonach
Serwis poświęcony Pythonowi - wszechstronnemu językowi programistycznemu. Podstawy i kurs Pythona, Django, PyQt4.
- blq napisał: 30 Czerwiec 2009, godzina 12:40
-
-
Witam!
Mam sobie dwa modele Users i Messages. W users mam dwa pola ident i password a w messages mam :nadawaca,adresat,datanadania,tresc,tytul. I teraz problem jest taki że w modelu Messages nadawca i adresat to int ktore mają zawierać id tych użytkowników. Wszystko działa do momentu wyświetlania listy wiadomości. W szablonie przyjmuje object kożystając z Paginator. Obiekt ten jest obiektem wiadomości danego usera. Gdy chcę wyświetlić nadawcę dostaję tylko id. Jak w szablonie za pomocą id pobrać ident z modelu Users.
Pozdrawiam blq
-
- riklaunim napisał: 30 Czerwiec 2009, godzina 12:46
-
-
A masz relację w Messages do Users? I też standardowo opiera się ona na kolumnie ID, która zawsze jest tworzona (chyba że ustawisz inaczej).
-
- blq napisał: 30 Czerwiec 2009, godzina 14:02
-
-
Miałem ale gdy chcaiłem zrobić i dla nadawca i dla adresat sypało się
-
- riklaunim napisał: 30 Czerwiec 2009, godzina 14:10
-
-
No napraw :P To będzie wszystko ładnie działać, a nie że "nie działa to usunę".
-
- Sayane napisał: 04 Lipiec 2009, godzina 22:50
-
-
Sorry, że tak późno, ale może się przyda ;-)
Sypie się, ponieważ jest konflikt related_name. Oto co się dzieje. Model:
class Message(models.Model):
nadawca = models.ForeignKey(User)
adresat = models.ForeignKey(User)
Teraz django próbuje utworzyć w modelu User dwie relacje o nazwie message_set (ba, jeżeli jest to User z django.contrib.auth.models to dodatkowo istnieje taka sama relacja z modelu Message z tejże aplikacji). Rozwiązanie jest proste. Wystarczy odpowiednio zmodyfikować model:
class Message(models.Model):
nadawca = models.ForeignKey(User, related_name='wyslane_wiadomosci')
adresat = models.ForeignKey(User, related_name='wiadomosci')
Teraz django zamiast tworzyć dwie konfliktowe relacje, tworzy relacje o nazwach wyslane_wiadomosci oraz wiadomosci, czyli można się odwoływać:
User.wiadomosci.all()
User.wyslane_wiadomosci.all()
-
Nie możesz dodawać nowych Tematów
Nie możesz dodawać nowych postów
Nie jesteś moderatorem