2017-01-15 1 views
1

Wie kann ich zeigen die Spalten id, Titel und das Jahre des Buches statt „Bücher Objekt“?anzeigen Spalten der referenzierten Tabelle anstelle des Objekts in django Admin

Dieser Screenshot zeigt den aktuellen Status:

enter image description here

Meine model.py wie folgt aussieht:

from __future__ import unicode_literals 
from django.db import models 


class Authors(models.Model): 
    name = models.CharField(max_length=45, blank=True, null=True) 
    birthday = models.DateField(blank=True, null=True) 

    class Meta: 
     managed = True 
     db_table = 'authors' 


class AuthorsBooks(models.Model): 
    author_id = models.OneToOneField('Authors', models.DO_NOTHING, db_column='author_id', primary_key=True) 
    book_id = models.OneToOneField('Books', models.DO_NOTHING, db_column='book_id', primary_key=True) 

    class Meta: 
     managed = True 
     db_table = 'authors_books' 
     unique_together = (('author_id', 'book_id'),) 


class Awards(models.Model): 
    author = models.OneToOneField('Authors', models.DO_NOTHING, db_column='author', primary_key=True) 
    award_name = models.CharField(max_length=45) 
    year = models.IntegerField(blank=True, null=True) 

    class Meta: 
     managed = True 
     db_table = 'awards' 
     unique_together = (('author', 'award_name'),) 


class Books(models.Model): 
    titel = models.CharField(max_length=45, blank=True, null=True) 
    year = models.IntegerField(blank=True, null=True) 

    class Meta: 
     managed = True 
     db_table = 'books' 

In der Klasse AuthorsBooks ich die beiden Fremdschlüssel OneToOneFields geändert haben.

Mein admin.py sieht wie folgt aus:

from django.contrib import admin 
from myapp.models import Authors 
... 

class AwardsInline(admin.TabularInline): 
    model = Awards 

class AuthorsBooksInline(admin.TabularInline): 
    model = AuthorsBooks 

class AuthorsAdmin(admin.ModelAdmin): 
    list_display = ("name", "birthday") 
    inlines = (AwardsInline, AuthorsBooksInline) 


admin.site.register(Authors, AuthorsAdmin) 

Antwort

1

eine Unicode-Funktion in Ihrem models.py pro Modell hinzufügen.

class Authors(models.Model): 
    name = models.CharField(max_length=45, blank=True, null=True) 
    birthday = models.DateField(blank=True, null=True) 

    class Meta: 
     managed = True 
     db_table = 'authors' 

    def __unicode__(self): 
     return self.name 
+0

Danke es mir ein wenig geholfen, ich habe hinzugefügt 'def __unicode __ (self): return self.title' den' Klasse Books (models.Model) 'und jetzt den Titel in der in ein normales Feld ändern und die Spalte _year_ hinzufügen? – Tuksn

+0

einfach Jahr zur Rückkehr der Unicode-Funktion, wie folgt hinzufügen: 'return '{} - {}'. Format (self.title, self.year)'. Ich verstehe jetzt, dass ich deine Frage nicht beantwortet habe. Es tut mir Leid. Leider weiß ich nicht, wie man die gewünschten Spalten rendert. – Lazykiddy

+0

Danke trotzdem, vielleicht hat jemand anderes eine Idee. – Tuksn

Verwandte Themen