Django不支持從list_display或list_filter(例如foo__bar)獲取外鍵值。我知道你可以創建一個模塊方法作爲list_display的解決方法,但我將如何去做相同的list_filter?謝謝。Django:list_filter和外鍵字段
回答
好,文檔說,你可以可以在list_filter
使用ForeignKey
字段類型:
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter
一個例子:
# models.py:
class Foo(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class Bar(models.Model):
name = models.CharField(max_length=255)
foo = models.ForeignKey(Foo)
# admin.py:
class BarAdmin(admin.ModelAdmin):
list_filter = ('foo')
如果你想通過一個字段從相關過濾模型中,在完成這項工作的方式中有一個補丁(可能會合併到1.2,因爲它看起來):
謝謝。儘管我正在尋找解決方法,而不是修補程序。對不起,沒有指定。 – Dan 2010-01-14 16:26:50
此功能不再有效。外鍵字段不會在側欄上呈現 - 就好像您沒有指定它們一樣。 – 2012-07-20 23:04:10
如果您手動構建更改列表的URL,那麼Django在關係之後沒有問題。例如:
/admin/contact/contact/?participant__event=8
或
/admin/contact/contact/?participant__event__name__icontains=er
都工作得不錯(儘管後者不加「不同的()」,所以可能有重複但通常不會對過濾器的問題)
所以你只需要添加一些東西到創建正確鏈接的頁面。您可以通過覆蓋更改列表模板或編寫自定義filterspec來完成此操作。有幾個例子,我通過谷歌搜索 - 特別是在Django Snippets
我遇到了同樣的問題,真的需要一個解決方案。我有一個解決方法,可以讓您在FK相關模型屬性上創建過濾器。你甚至可以穿越一個以上的FK關係。它創建一個新的FilterSpec子類,該子類用於在ForeignKey字段上爲您提供過濾器的默認RelatedFilterSpec的子類。
解決方案爲我http://www.hoboes.com/Mimsy/hacks/fixing-django-124s-suspiciousoperation-filtering/
定義
class SmarterModelAdmin(admin.ModelAdmin):
valid_lookups =()
def lookup_allowed(self, lookup, *args, **kwargs):
if lookup.startswith(self.valid_lookups):
return True
return super(SmarterModelAdmin, self).lookup_allowed(lookup, *args, **kwargs)
則允許某些外鍵字段查找
class PageAdmin(SmarterModelAdmin):
valid_lookups = ('parent')
通過「('parent')」是否指「元組('parent')」。如果不是,則刪除括號。 – 2012-10-03 09:19:06
您可以輕鬆創建Djang以來的自定義過濾器1.4通過重寫django.contrib.admin.SimpleListFilter
類。
的更多信息:
Django支持與國外重點領域
# models.py:
class Foo(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class Bar(models.Model):
name = models.CharField(max_length=255)
foo = models.ForeignKey(Foo)
# admin.py:
class BarAdmin(admin.ModelAdmin):
list_filter = ('foo__name')
從技術文檔list_filter:在list_filter字段名也可以跨越使用__查找
這是使用Django 1.6爲我工作的解決方案。 – Pengo 2015-01-23 17:43:37
- 1. 與外鍵字段
- 2. 與外鍵字段
- 3. 最後修改的字段和外鍵
- 4. ModelForm「實例」參數和外鍵字段
- 5. 如何獲得字段外鍵(表和字段)php mysqli
- 6. 選擇字段,文本字段和外鍵
- 7. 過濾器外鍵字段
- 8. 顯示外鍵字段
- 9. 作者外鍵字段
- 10. 休眠主外鍵字段
- 11. SQL查詢與外鍵字段的表引用其他外鍵字段
- 12. 休眠映射字段作爲主鍵和外鍵
- 13. 與Mysql和Propel的多字段和四字段外鍵的多對多關係
- 14. 重新渲染管理員訪問m2m字段和外鍵字段的模型
- 15. Django Restful Model外鍵 - 指定字段
- 16. 自定義inline_formset字段顯示外鍵
- 17. 創建與外鍵字段Laravel 5.3
- 18. Django管理外鍵字段過濾
- 19. Django在外鍵字段上的零值
- 20. Django過濾外鍵字段爲空時
- 21. 如何刪除外鍵字段?
- 22. Django-models:從外鍵使用字段
- 23. 字段,在外鍵中指定兩次
- 24. 基於字段的外鍵更改
- 25. Rails where子句搜索外鍵字段
- 26. 在Django中填充外鍵字段
- 27. SQLAlchemy的查詢外鍵字段(S)
- 28. 從外鍵表中檢索字段
- 29. Django模型外鍵字段匹配
- 30. 實體中的外鍵字段?
似乎使用1.2版本之前支持這一功能,Django的關係。 4。我不知道他們爲什麼現在禁用它。 – 2011-02-10 05:20:37