2

Djangoには、別のデータベースにある別のテーブルを参照する「messplatz」(DB-Id)というフィールドを持つモデル「イベント」があります。Djangos foreignKey-field は複数のデータベースでは使用できないため、フィールド「messplatz」は整数フィールドであり、参照された「Messplatz」の PK-Value を格納します。

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

私が抱えている問題は、django-tables 2 を使用したモデル Event の表現です。

モデル「Messplatz」は「prodis」アプリで定義され、別のデータベースにルーティングされます。私の見解は次のようになります。

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

ビューで、「Messplatz」フィールドに実際の Messplatz-Object (1) の名前を表示します。また、別のビューへのリンクにしたい(2)。(1) は、tables.py のフィールド 'messplatz' のカスタム レンダリング メソッドを定義することで実現できます。

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-tables 2によってプレーンテキストとして表示されます.django-tablesのLinkColumnを使用すると、LinkColumnとcustom_renderメソッドを同時に使用できないため、(1)も達成できません。

誰かアイデアがありますか?前もって感謝します

4

1 に答える 1

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 メソッドを Event-Model に移動する必要がありました。

from prodis.models import Messplatz

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

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

非常に悪いと思うので、これを解決策としてマークしません。しかし、この回答がお役に立てば幸いです。

于 2013-03-12T15:42:42.400 に答える