У меня есть простое приложение для фотоконкурса 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 в классе EntryInline
, чтобы указать, что порядок должен быть указан для данного человека, но этот порядок присваивается свойством person Id
, а не их свойством name
.
Как мне заказать этот встроенный объект в свойстве FK'd Person.name
?