2016-10-20 3 views
0

В этой модели:как получить последний в Джанго модели

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() 

Я получаю сообщение об ошибке:

Exception Value:  

'str' object has no attribute 'order_by' 

Я хочу последний ранг по умолчанию. Как это установить?

Спасибо.

Update # 1

Добавлен ранг Структура

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) 

Это Rank_structure ссылается Rank в классе Rank. Внешний ключ пользователя находится в стандартной таблице пользователя.

+1

Что значит последний 'Ранг'? Это невозможно с вашей нынешней структурой, которую вы предоставили. Объект «Ранг» имеет только одну «RankStructure», но «RankStructure» имеет много «Рангов» –

+0

ok. У меня есть таблица для RankStructure и таблица для пользователя. Их много, поэтому я создал Ранг. Ранг добавляет дату с использованием date_promoted. Поэтому, когда я получаю Пользователь, и я вызываю User.rank, мне нужен последний Ранг. – arcee123

+1

Пожалуйста, добавьте модели пользователя и RankStructure –

ответ

0

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что self.Rank.Name не является ModelManager, на котором вы можете позвонить order_by. Вам понадобится objects где-нибудь, если вы хотите позвонить order_by. Мы не можем помочь вам с форматированием django для требуемого запроса, если вы также не опубликуете определения моделей по просьбе нескольких комментаторов. Тем не менее, я подозреваю, что вы хотите что-то вроде:

def __str__(self): 
    return self.objects.filter(Rank_id=self.Rank_id).order_by('date_promoted').latest().User.Name 
Смежные вопросы