Dans Django, j'ai un modèle 'Event' qui a un champ appelé 'messplatz' (DB-Id) qui fait référence à une autre table située dans une base de données différente. Comme le champ foreignKey de Django n'est pas possible avec plusieurs bases de données, le champ 'messplatz' est un champ Integer, stockant la valeur PK de la table 'Messplatz' référencée :
class Event(models.Model):
messplatz = models.Integerfield()
Le problème que j'ai est la représentation du modèle Event avec django-tables 2 :
Le modèle "Messplatz" est défini dans l'application "prodis", qui renvoie à une autre base de données. Ma vue se présente comme suit :
def eventList(request):
table = EventTable(Event.objects.all())
RequestConfig(request).configure(table)
return render(request, 'mkv/eventList.html', {'table': table})
Dans la vue, je veux que le champ "Messplatz" affiche le nom de l'objet "Messplatz" (1). En outre, je veux qu'il soit un lien vers une autre vue (2). Je peux réaliser (1) en définissant une méthode de rendu personnalisée pour le champ 'messplatz' dans tables.py :
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)
Mais pour (2), je n'en ai aucune idée. Si je change la méthode de rendu personnalisée en
def render_messplatz(self):
return '<a href="...">%s<a>' % Messplatz.objects.get(id=self.messplatz)
les balises de liens sont affichées en texte brut par django-tables 2. Lorsque j'utilise la LinkColumn de django-tables, je ne peux pas non plus réaliser (1), car vous ne pouvez pas utiliser simultanément la LinkColumn et la méthode custom_render.
Quelqu'un a une idée ? Merci d'avance