2

,我有一個模型'Event',其中有一個名爲'messplatz'(DB-Id)的字段,該字段引用位於不同數據庫中的另一個表。由於Django的外鍵字段是不可能的多個數據庫中,字段「messplatz」是Integerfield,存儲引用的「Messplatz」的PK-值:django表格2在Django中顯示外部模型爲LinkColumn

class Event(models.Model): 
    messplatz = models.Integerfield() 

我的問題是模型事件的表示與Django表2:

模型'Messplatz'定義在'prodis'應用程序,它路由到不同的數據庫。 我的看法如下所示:

def eventList(request): 
    table = EventTable(Event.objects.all()) 
    RequestConfig(request).configure(table) 
    return render(request, 'mkv/eventList.html', {'table': table}) 

在視圖我想場「Messplatz」顯示實際Messplatz-對象的名稱(1)。此外,我希望它成爲另一種觀點的鏈接(2)。 我可以通過在tables.py限定用於字段「messplatz」定製渲染方法achive(1):

from prodis.models import Messplatz 

class EventTable(tables.Table): 

    class Meta: 
     model = Event 

def render_messplatz(self): 
    return '%s' % Messplatz.objects.get(id=self.messplatz) 

但對於(2)我不知道。如果我更改定製渲染方法

def render_messplatz(self): 
    return '<a href="...">%s<a>' % Messplatz.objects.get(id=self.messplatz) 

鏈路標籤由Django的表2,當我使用Django-表的LinkColumn顯示爲純文本,我無法實現(1)任一,因爲您不能同時使用LinkColumn和custom_render方法。

有沒有人有想法?在此先感謝

回答

0

它以某種方式工作。然而,這是一個非常糟糕的解決方案,我會感謝所有其他的想法。

我用Django的tables2模板欄目:

class EventTable(tables.Table): 
    #override messplatz-column 
    messplatz = tables.TemplateColumn('{% load url from future %}<a href="{% url \'messplatz_events\' record.messplatz %}">{{ record.get_messplatz }}</a>') 
    #Hint: {% load url from future %} is only needed for django versions < 1.5 

    class Meta: 
     model = Event 

要訪問record.get_messplatz,我不得不把get_messplatz方法移到事件型號:

from prodis.models import Messplatz 

class Event(models.Model): 
    messplatz = models.IntegerField() 

    def get_messplatz(self): 
     return Messplatz.objects.get(mpl_id=self.messplatz) 

並不標誌着這個作爲解決方案,因爲我認爲這是一個非常糟糕的。但我希望這個答案有幫助。