Monday, January 3, 2011

Re: New to Django, sheet music organization site

On 3 January 2011 23:00, Tim Sawyer <list.django@calidris.co.uk> wrote:
On 03/01/11 03:53, Kyle wrote:
When I try to access my Object, I get an error "invalid literal for
int() with base 10". I know it has something to do with ForeignKeys,
but cannot find how to fix it.

It helps if you post the full stack of the error - we can tell which line of code it came from then.  However,

def artist(request, myartist):
       myArgs = Song.objects.all().filter(artist=myartist)
       return render_to_response('music/index.html', {'artist': myArgs})

I think this is your problem.  What are you passing in on the url for myartist?  Is it a slug?

Song.objects.all().filter(artist=myartist)

is expecting myartist to be an Artist instance. Try

Song.objects.all().filter(artist__slug=myartist)

(that's two underscores between artist and slug.)

This says "Select me all the songs where the related Artist's slug is whatever was passed in on the url"

And if myartist is an id (and therefore likely an integer or a string of an integer, as it comes from a URL), then you want:

 Song.objects.all().filter(artist__id=myartist)

(the .all() is unneccessary, by the way).

Greg.

--
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 django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment