簡體   English   中英

readonly_fields在Django內聯模型中返回空值

[英]readonly_fields returns empty value in django inlined models

我是django框架的新手,在我目前的嘗試中,我有兩個模型(客戶端和Facture)。 在客戶端更改視圖中,外觀以TabularInline的形式顯示。

我想為每個內聯的制造對象顯示一個鏈接以下載文件。 所以我添加了一個自定義視圖,該視圖下載了制造文件,但是不知道如何鏈接到該文件

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 for 'clients_facture_download' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

當我將反向網址更改為時,一切正常

reverse("admin:clients_facture_change", args=[obj.pk])

所以任何人都可以幫助我知道如何反轉下載視圖,並且如果我在做的話認為正確嗎?

謝謝你的幫助

我認為您需要顛倒網址中的順序:

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

首先,您使用的是name='download' ,但嘗試撤消clients_facture_download

我會嘗試從更改網址

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

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

其次,InlineModelAdmin 沒有 get_urls方法。 您應該將其移至ClientAdmin類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM