Thanks, ideally OneToOneField is what I need, but due to weird legacy database schema, I can't use it. id is a bad name, but I would have to deal with the nomenclature for the moment. Thanks for help
On Aug 19, 9:37 am, Daniel Roseman <[EMAIL PROTECTED]> wrote: > There's quite a lot wrong with this code, quite apart from the > list_display issue. Comments interspersed below. > > On Aug 19, 2:33 pm, saeb <[EMAIL PROTECTED]> wrote: > > > > > No, that is not the real code. The real code as you mentioned is split > > into models.py and admin.py. And I am referring to the functions as > > strings ( a typo on my part). After posting the message last night I > > messed with the code more and function is displaying as 'none' . > > Referring to Malcolm's last suggestion, I changed the function to > > return an attribute and I still see the same issue, where the column > > is 'none' in display. > > > This is what I have. I really appreciate your help > > > ---models.py---- > > > class privateAcctManager(models.Manager): > > def show_acct_name(self): > > t = Acct.objects.all().filter(id= self.id).name > > return t > > You can't do this. The result of filter() is always a queryset, even > if only one object is returned. Plus 'self' here refers to the > manager, which doesn't have an ID. > > Anyway, this code doesn't really belong in a manager, but in a method > on the model itself. > > > class privateAcct(models.Model): > > id = models.ForeignKey(Acct) > > obj = privateAcctManager() > > > def acct_name(self): > > return self.obj.show_acct_name() > > No need for the reference to the manager here. Just return > self.id.name. > > id is a really bad name for the foreign key to Acct (which doesn't > seem to exist in the code you've got here - or did you mean Account?) > This will clobber the autogenerated primary key. If you want an actual > foreign key as primary key, you should probably be using OneToOneField > instead. > > > class Meta: > > db_table= 'private_acct' > > > class PublicAcct(models.Model): > > id = models.ForeignKey(Acct) > > class Meta: > > db_table= 'public_acct' > > Same comments apply re use of id here. > > > class Account(models.Model): > > name = models.TextField() > > balance = models.decimalfield() > > > -------admin.py-------- > > > class PrivateAcctAdmin(admin.modelAdmin): > > list_display =( 'id', 'acct_name' ) > > With the changes above, this should now work (assuming it's indented > properly). > -- > DR. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---