Here is a snippet of how my models are setup:
class Profile(models.Model):
name = models.CharField(max_length=32)
accout = models.ManyToManyField(
'project.Account',
through='project.ProfileAccount'
)
def __unicode__(self)
return self.name
class Accounts(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 ProfileAccounts(models.Model):
profile = models.ForeignKey('project.Profile')
account = models.ForeignKey('project.Accounts')
number = models.PositiveIntegerField()
class Meta:
ordering = ('number',)
Then when I access the Accounts, how can I sort by 'number' in the intermediary ProfileAccounts model, rather than the default 'name' in the Accounts Model?:
for acct_number in self.profile.accounts.all():
pass
This does not work, but is the gist of how I want it to access this data:
for scanline_field in self.scanline_profile.fields.all().order_by('number'):
pass
for acct_number in self.profile.accounts.all()
asfor acct_number in self.profile.accounts.all().order_by('link_to_profile')
. In case that was not clear. You don't have to add aget_accounts
method to theProfile
model. Django always creates an outer join on the many-to-many table, so specifying aorder_by
based on the field just works. – Albemarle