Model için yönetici değiştirme listesini görüntülerken, ilgili sayfalara yabancı anahtarların bağlantılarına karşılık gelen sütunları yapmak mümkün müdür? Basit bir örnek, yabancı bir anahtar olarak Bar içeren bir Foo nesnesine sahip. Foo için yönetici değişim listesini görüntülüyorsam (ve display_list sütunlarına Çubuğu dahil etmeyi ayarladıysa), ana sütunu Foo örneğinin düzenleme sayfasına bağlanırken, Bar sütunu Boo örneğinin düzenleme sayfasına bağlanır. Anladığım kadarıyla, kullanılan şablonu geçersiz kılabiliyorum, ancak bunu gerektirmeyen bir çözüm olup olmadığını merak ettim.Yabancı anahtar değişiklik listesine geç Listeyi göster
cevap
Bağlantının HTML'sini döndüren değişiklik uzmanında kullanmak için özel bir yöntem tanımlayabilirsiniz. Foo o barda için düzenleme sayfaya bağlantı böylece, tek bir bara sonra her foo bağlantıları Bar için yabancı anahtar varsa - belirtildiği gibi bir soru ile
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
Bir problem. Bununla birlikte, her çubuk birden fazla konuşmaya bağlanır, bu nedenle 'Foo örneğinin düzenleme sayfasına' bir bağlantı sormanız mantıklı değildir. ayarlı filtre ile Foo için değişiklik listesi sayfasına bağlantı sadece bu Bar'da bağlantı veren örneklerini göstermek Ne yapabilirsiniz geçerli: Değişiklik listesi varyantı herhangi bir değişiklik uzakta temizler rağmen
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
buldum ve Daniel'in cevabı sevdim, sen zaten yapıldı. Yani bu düzeltmek için bir yoldur:
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
size bir filtre versin:
Önce istek bir başvuru almak gerekir, sen benim yaptığım gibi changelist_view
veya queryset
sararak bunu yapabilir değişmeyen satırların içinde. Bunu başka bir soruda cevapladım, ama ilk önce geldiğim yer burasıydı, bu yüzden burada kaydetmek istedim. :-)
- 1. Yabancı Anahtar
- 2. yabancı anahtar
- 3. Kompozit anahtar için yabancı anahtar
- 4. Yabancı Anahtar (MySQL) nasıl eklenir
- 5. yabancı anahtar gerekir?
- 6. Raylar 4.2 yabancı anahtar
- 7. Yabancı anahtar firavunfaresi
- 8. Katılma tabloları, yabancı anahtar
- 9. Yabancı anahtar-SQL geliştirici
- 10. Yabancı anahtar uygulanmadı
- 11. Django ve yabancı anahtar
- 12. Django - yabancı anahtar özelliklerine göre filtreleme
- 13. CakePHP'de yabancı anahtar değil birincil anahtar
- 14. Mistik tablo alternatifinde yabancı anahtar?
- 15. laravel göç ekleyemezsiniz yabancı anahtar
- 16. Mysql çapraz veritabanı yabancı anahtar
- 17. JPA: yabancı anahtar ek açıklaması
- 18. 1'den fazla yabancı anahtar
- 19. Varlık Çerçevesinde Birincil/Yabancı Anahtar
- 20. FactoryGirl'de yabancı anahtar nasıl kullanılır
- 21. Sıfır da olabilen yabancı anahtar
- 22. ORMlite Android yabancı anahtar desteği
- 23. DynamoDB'de nasıl yabancı anahtar atar?
- 24. Django Filtre Sorgu Yabancı Anahtar
- 25. Gerekli bir yabancı anahtar ekleme
- 26. Yabancı Anahtar oluştururken MySQL Sözdizimi
- 27. Django- Yabancı Anahtar Model Al
- 28. Yabancı anahtar öğelerini yükleme Tastypie
- 29. Codeigniter geçişine yabancı anahtar ekleme
- 30. liquibase: hatalı oluşturulmuş yabancı anahtar
Bunu deneyeceğim. Foo değişim sayfasına bağlanarak kastettiğim şey sadece Foo değişim listesindeki Foo değişim sayfasının varsayılan bağlantısını korumaktır (bununla çok net olmadığını itiraf ediyorum). – Adam
Bu 1.4 veya 1.5 sürümünde herhangi bir güncelleme (Django'nun kendisinin büyük bir eki gibi göründüğü anlamına geliyor, bu yüzden 'contrib.admin''e zaten eklenmiş olabilir)? –