Kilka razy przeglądałem dokumentację Django dotyczącą frameworku contenttypes, a ja po prostu nie rozumiem tego wystarczająco dobrze, aby wdrożyć ogólne relacje w moim projekcie. Szukałem przykładów online lub samouczków dotyczących tej sprawy, ale nie mogę znaleźć ani jednego. Zadzwoń do mnie głupio, ale potrzebuję pomocy w tej sprawie (proszę nie odpowiadać, po prostu łącząc się z dokumentami). Opierając się na braku zasobów w Internecie, wierzę, że jeśli odpowiesz na to pytanie dokładnym przykładem, twoja odpowiedź może być najbardziej użytecznym przykładem do tej pory związanym z ogólnymi relacjami django (bonus!).Django: Przykład ogólnych relacji za pomocą struktury contenttypes?
Moje pytanie brzmi: czy ktoś może pokazać prosty przykład modeli i może kilka linii kodu pokazujących, jak interakcję z instancjami modelu ogólnego?
jako inspiracji, tutaj jest to, co uważam, że jest to bardzo powszechna sytuacja:
Witryna zawiera elementy multimedialne, które są w dużej mierze traktowane tak samo, ale różnią się nieco. Załóżmy na przykład, że istnieją elementy graficzne i wideo, a użytkownicy mogą "polubić" element lub "komentarz" do elementu. Podobieństwa i komentarze powinny być traktowane tak samo, niezależnie od tego, czy są one zamieszczane na obrazie lub elemencie wideo. Tak więc, jeśli istnieje ItemView do oglądania obrazu lub wideo w albumie użytkownika, następujące rodzaje połączeń są możliwe: mediaitem.comments.all()
lub len(mediaitem.likes.all())
lub comment.user_who_commented
, bez konieczności sprawdzania, który rodzaj elementu multimedialnego jest (zdjęcie lub wideo) .
wierzę, że trzeba sześć modeli na to:
- Streszczenie
MediaItem
klasa - dwa różne rodzaje pozycji mediów:
ImageItem
iVideoItem
- Abstrakt
MediaItemActions
klasa - Dwa różne rodzaje działań, które można wykonać w odniesieniu do elementów multimedialnych:
Like
iComment
Jeśli wiesz, jak korzystać z tej funkcji Django, proszę pokazać nam pełny przykład! Czuję, że byłoby to niezwykle potężne narzędzie i chciałbym go użyć w mojej aplikacji. Im bardziej wyraźne, tym lepiej.