Czy podczas przeglądania listy zmian administracyjnych dla modelu możliwe jest umieszczenie w kolumnach odpowiadających odsyłaczom kluczy obcych odnośników do odpowiednich stron? Prostym przykładem jest obiekt Foo, który zawiera pasek jako klucz obcy. Jeśli przeglądam listę zmian administracyjnych dla Foo (i ustawię ją tak, aby zawierała słupek w kolumnach display_list), główna kolumna będzie linkiem do strony edycji instancji Foo, podczas gdy kolumna paska będzie łączyła się ze stroną edycji instancji Boo. Rozumiem, że mogę przesłonić używany szablon, ale byłem ciekawy, czy istnieje rozwiązanie, które tego nie wymaga.Zmiana linku do strony zmiany klucza obcego
Odpowiedz
Można zdefiniować niestandardową metodę do użycia w liście zmian, która zwraca kod HTML łącza.
from django.core.urlresolvers import reverse
class MyFooAdmin(admin.ModelAdmin):
list_display = ('foo', 'bar_link')
def bar_link(self, obj):
url = reverse('admin:myapp_bar_change', args=(obj.pk,))
return '<a href="%s">Edit Bar</a>' % url
bar_link.allow_tags = True
Jeden problem z pytaniem jak stwierdził - jeśli Foo ma klucza obcego do baru, to każdy łączy foo na jednym pasku, dzięki czemu można na niej link do strony edycji na tym pasku. Jednak każdy pasek łączy się z wieloma filmami, więc nie ma sensu prosić o link do "strony edycji instancji Foo". Co można zrobić, to link do strony listy zmian dla Foo z filtrem ustawionym pokazać tylko instancje, które linkują do tej Bar:
def foo_link(self, obj):
url = reverse('admin:myapp_foo_changelist')
return '<a href="%s?bar=%s">See Foos</a>' % (url, obj.pk)
foo_link.allow_tags = True
znalazłem i lubiane odpowiedź Daniela, chociaż wariant listy zmian odsunie wszelkie zmiany już to zrobiłem. Jest to więc sposób ustalić, że:
Najpierw trzeba uzyskać odniesienie do wniosku, można to zrobić poprzez owinięcie changelist_view
lub queryset
jak ja:
class CountryAdmin(ModelAdmin):
model = Country
list_display = ('pk', 'continent_changelist')
# ...
def queryset(self, request):
self._get_params = request.GET
return super(CountryAdmin, self).queryset(request)
def continent_changelist(self, obj):
url = reverse('admin:yourapp_country_changelist')
querystring = self._get_params.copy()
querystring['continent__id__exact'] = obj.continent.pk
return u'<a href="{0}?{1}">{2}</a>'.format(
url, querystring.urlencode(), obj.continent)
continent_changelist.allow_tags = True
To daje filtr wewnątrz wierszy listy zmian. Odpowiedziałem na to w innym pytaniu, ale to było miejsce, w którym faktycznie byłem pierwszy, więc chciałem go tutaj nagrać. :-)
- 1. Administrator Django - zmiana tekstu wyświetlania obcego klucza
- 2. Wartości pola klucza obcego phpMyAdmin obcego klucza
- 3. Zmiana wygenerowanej nazwy klucza obcego w stanie hibernacji
- 4. Jak działa dostęp do klucza obcego Django
- 5. Przypisywanie identyfikatora użytkownika do klucza obcego = null
- 6. Użyj klucza podstawowego złożonego jako klucza obcego
- 7. Zmiana rozmiaru strony Jquery Mobile podczas zmiany strony
- 8. Skróty klucza obcego w tabeli
- 9. zerowalne klucza obcego w Rails
- 10. has_many: za pomocą klucza obcego?
- 11. Plan wykonania klucza obcego Oracle?
- 12. Definiowanie relacji bez klucza obcego
- 13. SQlite - Android - Składnia klucza obcego
- 14. Błąd niezgodności klucza obcego SQLite
- 15. Mapowanie klucza podstawowego jako klucza obcego w bazie danych
- 16. Próba rozwiązania metadanych klucza obcego z metadanych JDBC nie może znaleźć odwzorowań kolumn dla klucza obcego
- 17. EF nie generuje skojarzenia klucza obcego z klucza obcego w tabeli
- 18. Narzędzie SQLite z obsługą klucza obcego?
- 19. Elixir Ecto: Jak sprawdzić poprawność klucza obcego?
- 20. Fluent NHibernate - mapowanie klucza obcego jako własności
- 21. Klawisz obcego klucza wieloznacznego Hibernuj Domyślnie 0
- 22. Usuń wiersze NIE odwołują obcego klucza
- 23. Jak używać "klucza obcego" w doktrynie?
- 24. Dodawanie klucza obcego w studiu graficznym 2012
- 25. Czy SQLite3 nie obsługuje ograniczeń klucza obcego?
- 26. Wyszukiwanie według klucza obcego w admin
- 27. ustawić wartość pustą w kolumnie klucza obcego?
- 28. GROUP BY za pomocą klucza obcego lub klucza podstawowego?
- 29. Ustawianie klucza obcego w ASP.NET MVC 4
- 30. Relacja klucza obcego z peewee i pytonem
Dam ci spróbować. Co mam na myśli, łącząc się ze stroną zmiany Foo, to po prostu zachować domyślny link do strony zmiany Foo z listy zmian Foo (przyznaję, że nie było to dla mnie jasne). – Adam
Wszelkie aktualizacje na ten temat w wersji 1.4 lub 1.5 (mam na myśli, że wygląda to na wspaniały dodatek do samego Django, więc może jest już dodany do 'contrib.admin')? –