Найти - Пользователи
Полная версия: list_filter и ForeignKey
Начало » Django » list_filter и ForeignKey
1
nuklea
У меня есть три модели:

class Brand(models.Model):
"""Производители авто, такие как BMW, Audi, etc"""

class Model(models.Model):
"""Модельный ряд определенного производителя"""
brand = models.ForeignKey(Brand)

class Engine(models.Model):
"""Модификации двигателей"""
brand = models.ForeignKey(Model)
А так же три модели в админке:

class BrandAdmin(admin.ModelAdmin):
list_display = ('name', )

class ModelAdmin(admin.ModelAdmin):
list_display = ('name', 'fromYear', 'toYear')
list_filter = ('brand', )

class EngineAdmin(admin.ModelAdmin):
list_display = ('model', 'name', 'category', 'type', 'kind', 'capacity', 'power')
list_filter = ('model', )
Вопрос: как заставить админку для Engine создать фильтр для Brand? То есть что-то типа list_filter = ('model__brand', ‘model’)
romankrv
Например так:

models.py:
class Category(models.Model):
title = models.CharField(max_length=255)
parent = models.ForeignKey('self', blank=True, null=True)
admin.py
class CategoryAdmin(admin.ModelAdmin):
list_display = ('title','parent')
search_fields = ['parent__title', 'title']
admin.site.register(Category, CategoryAdmin)
будет искать как по связям модели так и отдельно по титлу
nuklea
А два ForeignKey — это нормально, да?
romankrv
Нормально до тех пор пока это считать нормальным. Но что есть нормально.
Короче у меня работает так. Если хочешь оптимизируйся.
Ferroman
romankrv
Думаю, такой подход не верен, по очень многим причинам.
nuklea
Я не проверял, но попробуйте 'model_set__brand' или через related_name (http://docs.djangoproject.com/en/1.2/ref/models/fields/#django.db.models.ForeignKey.related_name)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB