Malcolm,
So how do I call a method in my list_display? Here is my models file
class Manufacturer(models.Model):
name = models.CharField(maxlength=200)
manufacturerslug = models.SlugField(prepopulate_from=["name"])
description = models.TextField(maxlength=1000)
def __str__(self,):
return self.name
class Admin:
pass
class Collection(models.Model):
name = models.CharField(maxlength=200)
collectionslug = models.SlugField(prepopulate_from=["name"])
description = models.TextField(maxlength=1000)
manufacturer = models.ForeignKey(Manufacturer)
def __str__(self,):
return self.name
class Admin:
pass
class Style(models.Model):
name = models.CharField(maxlength=200)
theslug = models.SlugField(prepopulate_from=('name',))
collection = models.ForeignKey(Collection)
class Admin:
search_fields = ['name']
list_display = ('name', 'theslug','collection', rmanu())
def __str__(self,):
return self.name
def rmanu(self,):
return self.collection.manufacturer
Here is what I get when I try to call the method in a python shell
>>> from mysite.rugs.models import Style
>>> s = Style.objects.filter(id=1)
>>> s
[<Style: 89b>]
>>> s.rmanu()
Traceback (most recent call last):
File "<console>", line 1, in ?
AttributeError: 'QuerySet' object has no attribute 'rmanu'
>>>
I thought that was how I call a method?
Thanks
On May 23, 5:14 pm, Malcolm Tredinnick <[EMAIL PROTECTED]>
wrote:
> On Wed, 2007-05-23 at 14:33 -0700, Greg wrote:
> > I'm having a problem displaying data in my admin using list_display.
> > I want to be able to show the Manufacturer in the admin from my styles
> > page. Here are my models:
>
> > class Manufacturer(models.Model):
> > name = models.CharField(maxlength=200)
> > manufacturerslug = models.SlugField(prepopulate_from=["name"])
> > description = models.TextField(maxlength=1000)
>
> > def __str__(self,):
> > return self.name
>
> > class Admin:
> > pass
>
> > class Collection(models.Model):
> > name = models.CharField(maxlength=200)
> > collectionslug = models.SlugField(prepopulate_from=["name"])
> > description = models.TextField(maxlength=1000)
> > manufacturer = models.ForeignKey(Manufacturer)
>
> > def __str__(self,):
> > return self.name
>
> > class Admin:
> > pass
>
> > class Style(models.Model):
> > name = models.CharField(maxlength=200)
> > theslug = models.SlugField(prepopulate_from=('name',))
> > collection = models.ForeignKey(Collection)
>
> > class Admin:
> > search_fields = ['name']
> > list_display = ('name', 'theslug','collection',
> > 'collection.manufacturer')
>
> > def __str__(self,):
> > return self.name
>
> > When I view my style table in the admin I want to be able to display
> > the manufacturer. However, I don't have a manufacturer field in the
> > Style table. All I have is a foreign key to collection, which
> > contains a foreignkey to manufacturer. I have no problem displaying
> > the collection that the style is associated with. I want to be able
> > to show the manufacturer of the style in the admin.
>
> > I currently do "list_display = ('name', 'theslug', 'collection',
> > 'collection.manufacturer')" However it errors when
> > 'collection.manufacurer'. Is it possible for me to show the
> > Manufacturer of the style in the admin?
>
> Doing list_display lookups across models like this doesn't work, as
> you've discovered. One day we might even fix that, because it's about a
> four line change to fix.
>
> For the time being, the simplest solution is to create a method that
> returns collection.manufacturer and use that method name in the
> list_display list. You can even make this field sortable using the
> admin_order_field attribute on the function (search the model-api docs
> for more information), I suspect.
>
> Regards,
> Malcolm- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---