2016-10-19 1 views
0

In tables.py habe ich importiert django-tables2Reverse für Ansicht schlägt fehl, weil Argument None ist

class CarownerTable(tables.Table): 
    ... 
    Car_registration=tables.LinkColumn('register_docs', args =[A('register__id')], text='View Register', orderable=False) 

Mein urls.py wie folgt aussieht,

url(r'^register_docs/$', views.register_docs, name='register_docs'), 
url(r'^register_docs/(?P<docid>(\d)+)$', views.register_docs, name='register_docs'), 

und die Ansicht als

def register_docs(request, docid=None): 
    #This view allows for the display of the pdf file 
    if docid is None: 
     #this line here loads a default image 
     doclink = '........./Car/Misc/noImageOnFile.pdf' 
     return HttpResponse(doclink, content_type="application/pdf") 
    else: 
     register_doc_path = Register.objects.get(pk=docid).register_File_Path 

     register_doc_data = open(register_doc_path, "rb").read() 
     t = loader.get_template('carmanager/display_docs.html') 
     variables = RequestContext(request, {'file':register_doc_data}) 
     output = t.render(variables) 
     return HttpResponse(register_doc_data, content_type="application/pdf") 

Das Problem ist, dass, wenn ich Ergebnisse lade einige der Objekte kein Dokument an sie angehängt. diese verursachen

Reverse for 'register_docs' with arguments '(None,)' and keyword arguments '{}' not found. 2 pattern(s) tried: ['carmanager/register_docs/(?P<docid>(\\d)+)$', 'carmanager/register_docs$'] 

Ich habe versucht, und zwei url erstellen, die ein Argument und man akzeptiert, das nicht, aber es wird nicht immer noch erlauben, die Tabelle mit den zu laden, die nicht haben. Ich möchte beide laden, obwohl ein Auto-Registrierungsdokument nicht geladen werden kann.

Antwort

0

Also ist die Lösung, eine LinkColumn nicht zu verwenden, wenn einige Ihrer Datensätze Werte für die agrs fehlen.

Wenn Sie Informationen in django-tables2 anzuzeigen, in dem eine Spalte könnte oder nicht Infos für eine URL-Link Verwendung

templateColumn 

zum Beispiel

templateRegister = tables.TemplateColumn(template_name="carmanager/registertemplate.html") 

registertemplate.html sollte bedurft aussehen so

<a {% if record.register__id %} target="_Blank" href="/carmanager/register_docs/{{record.register__id}}"> View Register {%else%} > No register {%endif%}</a> 
Verwandte Themen