#django #django-admin
#django #django-admin
Вопрос:
У меня есть простое приложение для конкурса фотографий Django, в котором есть три простых определения модели:
class Person(models.Model):
name = models.CharField(unique=True, max_length=255)
id = models.AutoField(primary_key=True)
class Meta:
db_table = u'people'
def __unicode__(self):
return self.name
class Round(models.Model):
theme = models.CharField(max_length=255)
number = models.IntegerField()
id = models.AutoField(primary_key=True)
class Meta:
db_table = u'rounds'
def __unicode__(self):
return self.season.name " - " self.theme
class Entry(models.Model):
rank = int
total_score = models.SmallIntegerField()
id = models.AutoField(primary_key=True)
person = models.ForeignKey(Person, db_column='person')
round = models.ForeignKey(Round, db_column='round')
A Round
имеет несколько Entry
объектов, и у каждого Entry
есть один Person
. Person
Очевидно, что можно разделить несколько Entrys
на разные Rounds
.
В представлении администратора я хотел бы иметь возможность выбрать Round
и просмотреть подробные сведения о Entry
встроенных элементах. Это я могу сделать следующим образом:
class EntryInline(admin.TabularInline):
model = Entry
fields = ['comments','person','total_score','image']
readonly_fields = ['person','image']
extra = 0
class RoundAdmin(admin.ModelAdmin):
fields = ['theme','number']
inlines = [EntryInline]
Однако это сортирует Entry
, казалось бы, произвольно. Я могу использовать ordering
ключевое слово django new в EntryInline
классе, чтобы указать, что порядок должен быть для person, но это упорядочивает свойство person Id
, а не их name
свойство.
Как бы я упорядочил это встроенное свойство FK Person.name
‘d?
Ответ №1:
Добавьте это в EntryInline
класс:
ordering = ["person__name"]