2016-10-20 1 views
0

In diesem Modell:, wie die neuesten in django Modell erhalten

class Rank(models.Model): 
    User = models.ForeignKey(User) 
    Rank = models.ForeignKey(RankStructure) 
    date_promoted = models.DateField() 

    def __str__(self): 
     return self.Rank.Name.order_by('promotion__date_promoted').latest() 

ich den Fehler bekommen:

Exception Value:  

'str' object has no attribute 'order_by' 

ich den neuesten Rang als Standard verwendet werden soll. Wie stelle ich das ein?

Danke.

Update # 1

hinzugefügt Rang Struktur

class RankStructure(models.Model): 
    RankID = models.CharField(max_length=4) 
    SName = models.CharField(max_length=5) 
    Name = models.CharField(max_length=125) 
    LongName = models.CharField(max_length=512) 
    GENRE_CHOICES = (
     ('TOS', 'The Original Series'), 
     ('TMP', 'The Motion Picture'), 
     ('TNG', 'The Next Generation'), 
     ('DS9', 'Deep Space Nine'), 
     ('VOY', 'VOYAGER'), 
     ('FUT', 'FUTURE'), 
     ('KTM', 'KELVIN TIMELINE') 
    ) 
    Genre = models.CharField(max_length=3, choices=GENRE_CHOICES) 
    SPECIALTY_OPTIONS = (
     ('CMD', 'Command'), 
     ('OPS', 'Operations'), 
     ('SCI', 'Science'), 
     ('MED', 'Medical'), 
     ('ENG', 'Engineering'), 
     ('MAR', 'Marine'), 
     ('FLT', 'Flight Officer'), 
    ) 
    Specialty = models.CharField(max_length=25, choices=SPECIALTY_OPTIONS) 
    image = models.FileField(upload_to=image_upload_handler, blank=True) 

Dies ist der Rank_structure von Rang in Klasse Rang verwiesen. Der Benutzer Fremdschlüssel wechselt in die Standard-Benutzertabelle.

+1

Was meinst du zuletzt 'Rank'? Es ist nicht möglich mit Ihnen aktuelle Struktur die Sie zur Verfügung gestellt haben. 'Rank' Objekt hat nur eine' RankStructure', aber 'RankStructure' hat viele' Rank's –

+0

ok. Ich habe eine Tabelle für RankStructure und eine Tabelle für User. Sie sind viele zu viele, also baute ich Rank. Rank fügt das Datum hinzu, das mit date_promoted wirksam wird. Also, wenn ich einen User gebe und ich User.rank anrufe, möchte ich den neuesten Rank. – arcee123

+1

Bitte fügen Sie Ihre User und RankStructure Modelle hinzu –

Antwort

0

Der Grund, dass Sie einen Fehler erhalten, ist, weil self.Rank.Name kein ModelManager ist, auf dem Sie order_by anrufen können. Sie benötigen eine objects irgendwo dort, wenn Sie order_by anrufen möchten. Wir können Ihnen nicht bei der Django-Formatierung für die gewünschte Abfrage helfen, es sei denn, Sie stellen auch die Modelldefinitionen wie von mehreren Kommentatoren angefordert bereit. Das heißt, ich vermute, dass was Sie wollen, ist etwas wie:

def __str__(self): 
    return self.objects.filter(Rank_id=self.Rank_id).order_by('date_promoted').latest().User.Name 
Verwandte Themen