2016-09-09 7 views
0

をインライン化ジャンゴに空の値を返し、私の現在の試みで、私は2つのモデル(クライアントおよび骨折)を持っています。 Factureは、クライアントの変更ビューにTabularInlineとして表示されます。readonly_fields iはDjangoフレームワークに新しいですモデル

ファイルをダウンロードするために、各インラインファクタオブジェクトのリンクを表示する必要があります。私は骨折ファイルをダウンロードするカスタムビューを追加しましたが、それ

class Client(models.Model): 
    ... 

class Facture(models.Model): 
    client = models.ForeignKey(Client, on_delete=models.CASCADE) 
    numero = models.IntegerField(unique=True, default=rand_code) 
    ... 

とadmin.py内にリンクする方法を知らない:

class FactureInline(admin.TabularInline): 

    model = Facture 
    extra = 0 

    readonly_fields = ('numero', 'dl_link') 

    def DLFacture(self, request, obj): 
     ... 
     response.write(pdf) 
     return response 

    def get_urls(self): 
     urls = super(FactureAdmin, self).get_urls() 
     from django.conf.urls import url 
     download_url = [ 
      url(r'^(?P<pk>\d+)/download/$', self.admin_site.admin_view(self.DLFacture), name="download"), 
     ] 
     return download_url + urls 

    def dl_link(self, obj): 
     from django.core.urlresolvers import reverse 
     return reverse("admin:clients_facture_download", args=[obj.pk]) 

admin.site.register(Facture, FactureAdmin) 

class ClientAdmin(admin.ModelAdmin): 
    inlines = [ 
     FactureInline, 
    ] 
admin.site.register(Client, ClientAdmin) 

私は、次のエラーを取得:

を私は

reverse("admin:clients_facture_change", args=[obj.pk]) 
に逆のURLを変更したときに
Reverse for 'clients_facture_download' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

すべてが正常に動作します

だから、ダウンロードビューを元に戻す方法を知ってくれる人がいらっしゃいますか?私が思うだろう任意のヘルプ

答えて

0

を第一に、あなたはname='download'を使用しますが、clients_facture_downloadを逆転しようとしています。

私はget_urls方法InlineModelAdmin does not have、第二に

url(r'^(?P<pk>\d+)/download/$', self.admin_site.admin_view(self.DLFacture), name="clients_fracture_download"), 

url(r'^(?P<pk>\d+)/download/$', self.admin_site.admin_view(self.DLFacture), name="download"), 

からURLを変更しようとするだろう。あなたはClientAdminクラスに移動してください。

+0

の順番になっています。私が使ったURLは、Facture(admin.ModelAdmin)のlist_displayで使用するとうまく動作します。私は問題がTabularInlineクラスの使用に関連していると思います。 – ppp0h

+0

あなたが言うように、インラインクラスは 'get_urls'メソッドを持っていません。モデル管理クラスに移動する必要があります。 – Alasdair

+0

もし私がそうするなら、どのようにしてファクセルオブジェクトpkを得ることができますか? – ppp0h

0

ため

おかげで、あなたは、URLの順序を逆にする必要があります。

url(r'^download/(?P<pk>\d+)$', self.admin_site.admin_view(self.DLFacture), name="download"), 
    ] 
+0

これも機能しませんでした。私はリンクがr '^(?P \ d +)/ download/$である必要があります。オブジェクトの変更URLは、クライアント/ 1 /変更/ – ppp0h

関連する問題