В Профиле есть опечатка (это «accout», когда я думаю, что вы имеете в виду «account»), но, что более важно, в модели смешаны формы единственного / множественного числа.
В Django обычно принято называть ваши классы единичными, а имена ManyToManyField - множественными. Итак:
class Profile(models.Model):
name = models.CharField(max_length=32)
accounts = models.ManyToManyField(
'Account',
through='ProfileAccount'
)
def __unicode__(self)
return self.name
class Account(models.Model):
name = models.CharField(max_length=32)
type = models.CharField(max_length=32)
class Meta:
ordering = ('name',)
def __unicode__(self)
return self.name
class ProfileAccount(models.Model):
profile = models.ForeignKey(Profile)
account = models.ForeignKey(Account)
number = models.PositiveIntegerField()
class Meta:
ordering = ('number',)
Я немного запутался в том, что вы пытаетесь сделать с этой моделью, но если вы сделаете эти изменения, то for acct_number in self.profile.accounts.all().order_by('number'):
должно сработать. Предполагая, что никаких других проблем нет.