У меня есть следующая проблема.Django Inline Model Admin filter Foreign Field
У меня есть 3 модели:
class Deal(models.Model):
name = models.CharField(max_length=80)
class Site(models.Model):
name = models.CharField(max_length=80)
deal = models.ForeignKey(Deal)
class Picture(models.Model):
title = models.CharField(max_length=80)
deal = models.ForeignKey(Deal)
site = models.ForeignKey(Site)
Я хочу сделать Deal Администратор с сайта & Picture моделей рядный администратора:
class SiteInline(admin.StackedInline):
model = Site
extra = 1
class PictureInline(admin.StackedInline):
model = Picture
extra = 1
class DealAdmin(admin.ModelAdmin):
inlines = [
SiteInline,
PictureInline,
]
То, что я хочу сделать, это когда я выборе сайта в картинке admin он показывает только сайты, к которым я отношусь к текущей сделке, которую я просматриваю (если я обновляю - не создавая новую).
Я хочу, чтобы это работало администратором, я потратил много часов на поиск в Интернете, но не нашел ничего полезного, пожалуйста, помогите!
Я пытался сделать это так, но я не знаю, как получить доступ к экземпляру родительской модели, чтобы получить идентификатор сделки:
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'site':
kwargs['queryset'] = Site.objects.filter(deal__id=1)
return super(PictureInline, self).formfield_for_foreignkey(db_field, request=None, **kwargs)
'' 'класс PictureInline (admin.ModelAdmin):' '' это точно? Создавая его и регистрируя его с помощью Picture, не дает никаких результатов при добавлении '' 'form = PictureInlineForm''' в' '' class PictureInline (admin.StackedInline): '' 'мы получаем ошибку' '' Picture не имеет никакой сделки .''' – raratiru