On Sat, 2007-11-10 at 11:26 -0800, Xan wrote: > > > On Nov 10, 6:01 am, Malcolm Tredinnick <[EMAIL PROTECTED]> > wrote: > > On Fri, 2007-11-09 at 08:19 -0800, Xan wrote: > > > > > On Nov 9, 2:36 am, Malcolm Tredinnick <[EMAIL PROTECTED]> > > > wrote: > > > > On Thu, 2007-11-08 at 09:11 -0800, Xan wrote: > > > > > Hi, > > > > > > > I have these models: > > > > > > > class A(models.Model): > > > > > > > [...] > > > > > def __str__(self): > > > > > return "(%s, %s)" % (self.estudi, self.curs) > > > > > > > class Admin: > > > > > pass > > > > > > > and > > > > > > > class B(models.Model): > > > > > > > estudi_oferit = models.ManyToManyField('A', blank=True, null=True) > > > > > > > class Admin: > > > > > list_display = ('tipus', 'codi', 'nom', 'adreca', > > > > > 'localitat', 'cp', > > > > > 'zona_concurs', 'ordre_concurs', 'estudi_oferit') > > > > > > > and when I list B elements in admin mode, in puts me address memory of > > > > > objects instead of displaying field A as I define in __str__ > > > > > > You have not defined __str__ on B, so this isn't entirely unexpected > > > > (although I am not completely sure what you're seeing, but anything is > > > > not unexpected here). > > > > > > Note that the estudi_oferit field is many-to-many, so it has no > > > > "natural" way to be represented as a string. After all, it could be > > > > referring to 10,000 objects at the other end. There's no way to display > > > > that naturally. > > > > > I'mt not agree with you: there is a natural way for displaying > > > "estudi_oferit": list all of estudi_oferit's that has one instance. > > > > Since it's a many-to-many relationship, there could be millions of > > related objects for a single B instance, so this would be a very poor > > default representation. > > Yes, but I mean that it should be that way. > We could be restrict the number of objects displaying in admin mode > by: > list_display = ('tipus', 'codi', 'nom', 'adreca', 'localitat', > 'cp', 'zona_concurs', 'ordre_concurs', 'estudi_oferit':30) > > and admin mode only show almost 30 first objects of estudi_oferit? > > It's the natural way for displaying it I think. For the problem of > millions of objects we could put a restriction of displaying in list. > It could be done?
I've explained why this wouldn't be a good idea (and the documentation extends that explanation). You want to impose extra database hits and computation on every single Django user just so that you don't have to write on extra method. That's not going to happen. Django provides you with a sensible default and also documents how you can change this. You really have the best of both worlds here. Best wishes, Malcolm -- If it walks out of your refrigerator, LET IT GO!! http://www.pointy-stick.com/blog/ --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---