Czy istnieje sposób na uzyskanie nazwy modelu dowolnego obiektu w szablonach django. Ręcznie, możemy spróbować, definiując metody w modelach lub używając znaczników szablonów ... Ale czy istnieje jakiś wbudowany sposób?Nazwa modelu obiektów w szablonach django
Odpowiedz
object.__class__.__name__
lub object._meta.object_name
powinien podać nazwę klasy modelu. Jednak ten nie może być używany w szablonach, ponieważ nazwy atrybutów zaczynają się od podkreślenia.
Nie ma wbudowanego sposobu, aby uzyskać tę wartość z szablonów, więc musisz zdefiniować metodę modelu, która zwraca ten atrybut, lub dla bardziej ogólnego/wielokrotnego użytku, użyj filtra szablonu:
@register.filter
def to_class_name(value):
return value.__class__.__name__
które można użyć w szablonie jako:
{{ obj | to_class_name }}
nie można uzyskać dostępu do nazwy klasy bezpośrednio. Robi coś takiego:
{{ object.__class__ }}
spowoduje TemplateSyntaxError: Variables and attributes may not begin with underscores
. Django nie pozwala na dostęp do tego rodzaju atrybutów - konwencje Python oznaczają, że są ukrytymi szczegółami implementacji, a nie częścią interfejsu API obiektu.
Utwórz filtr szablonu zamiast, a następnie można go używać w następujący sposób:
{{ object|model_name_filter }}
tworzenia filtrów jest bardzo proste: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
Od wersji 1.2 i może być wcześnie Django ma atrybut opts
w szablony. Atribute jest link do model._meta
dowodów zalecana look at source code into Github
on używany do szablonu bardzo prosta: {{opts}}
lub {{opts.db_table}}
To tylko dla django-admin. –
- 1. Jak mogę uzyskać liczbę obiektów dla modelu w szablonach Django?
- 2. Django ForeignKey dostępu modelu obiektów
- 3. Nazwa nie jest zdefiniowane w modelu Django
- 4. Prawidłowy sposób sprawdzania poprawności obiektów modelu Django?
- 5. Dostęp do Django OneToOneField w szablonach?
- 6. Django substr/substring w szablonach
- 7. Django settings.py zmienne w szablonach
- 8. LUB stan w szablonach django
- 9. Zmienne odejmowanie w szablonach django
- 10. Wywołanie funkcji menedżera niestandardowego w szablonach django
- 11. Django - Przechowywanie obiektów w sesji
- 12. jak umieścić komentarze w szablonach django
- 13. Pobierz element listy dynamicznie w szablonach django
- 14. Wykrywanie nie ustawionych zmiennych w szablonach Django
- 15. oddzielone przecinkami list w szablonach django
- 16. Jak umieścić nawiasy klamrowe w szablonach django?
- 17. jak używać atrybutu href w szablonach django
- 18. Uzyskaj informacje o użytkowniku w szablonach django
- 19. Pole modelu w Django
- 20. Jak uzyskać obiekt przy użyciu modelu Nazwa modelu ciąg w Django
- 21. Django: Konwertowanie całego zestawu obiektów modelu na pojedynczy słownik
- 22. Drukowanie obiektów w Django
- 23. Dlaczego deklarowanie menedżera do modelu Django, anulowanie "obiektów"
- 24. Jak pracować z django-rest-framework w szablonach
- 25. Pola dostępu w pośrednim modelu Django
- 26. Wartość domyślna dla pola w modelu Django
- 27. Django szablon datetime.weekday nazwa
- 28. Ręcznie ustawiana nazwa kolumny w modelu szynowym
- 29. Kontrola współbieżności w modelu Django
- 30. Metoda modelu Django - create_or_update
Ok .. Dzięki Shawn dla reply.I wykorzystywane w ten sposób, myśl może być jakiś wbudowany w sposób! ! – Neo
Nie sądzę, że potrzeba tego jest dość powszechna, aby zagwarantować wbudowane podejście. Jeśli potrzebujesz go wystarczająco często, możesz utworzyć klasę abstrakcyjną, która implementuje metodę, a następnie użyć jej jako podstawy dla wszystkich modeli. Osobiście jednak będę trzymać się za pomocą znacznika filtra. –
Ok .. Dzięki Shawn. – Neo