在Django中,我有一个模型'Event',它有一个名为'messplatz'(DB-Id)的字段,它引用另一个位于不同数据库的表。由于Djangos foreignKey-field不可能有多个数据库,因此字段'messplatz'是一个Integerfield,存储引用的'Messplatz'的PK值:
class Event(models.Model):
messplatz = models.Integerfield()
我遇到的问题是使用django-tables 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-Object(1)的名称。而且,我希望它是另一个视图的链接(2)。 我可以通过在tables.py中为字段'messplatz'定义自定义render-method来实现(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-tables显示为纯文本2.当我使用django-table的LinkColumn时,我也无法实现(1),因为你不能同时使用LinkColumn和custom_render方法。 / p>
有人有想法吗?提前致谢
答案 0 :(得分: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)
不会将此标记为解决方案,因为我认为这是一个非常糟糕的解决方案。但我希望这个答案有所帮助。