5

次の問題があります。

私は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)

Site & Picture インライン管理モデルで Deal Admin を作成したい:

class SiteInline(admin.StackedInline):
    model = Site
    extra = 1


class PictureInline(admin.StackedInline):
    model = Picture
    extra = 1


class DealAdmin(admin.ModelAdmin):
    inlines = [
        SiteInline,
        PictureInline,
    ]

私がやりたいことは、Site in Picture admin を選択しているときに、表示している現在の取引に属しているサイトのみを表示することです (更新している場合 - 新しいものを作成していません)。

これを管理者で機能させたいのですが、何時間もかけてウェブを検索しましたが、役立つものが見つかりませんでした。助けてください!

私はこのようにしようとしていましたが、親モデル インスタンスにアクセスして取引 ID を取得する方法がわかりません。

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)
4

2 に答える 2

0

Django:ModelAdmin内からモデルインスタンスにアクセスしますか?

class PictureInlineForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(PictureInlineForm, self).__init__(*args, **kwargs)
        self.fields['site'].queryset = Site.objects.filter(
            deal=self.instance.deal)

class PictureInline(admin.ModelAdmin):
    form = PictureInlineForm
于 2013-08-19T05:33:10.470 に答える