The_film was just sudo code. I was assuming you wanted to show
filmmakers based on a movie id. I would recommend going through the
django tutorials if you haven't, they go over all of the queries and
how the general layout goes when doing stuff like this.

On Aug 16, 7:46 pm, Wendy <we...@mutantfactory.com> wrote:
> It doesn't know what the_film is:
> name 'the_film' is not defined
>
> if I put quotes around 'the_film', it's expecting an integer:
> invalid literal for int() with base 10: 'the_film'
>
>  I think that what's happening, it's trying to match the id.
>
> I'm going to read about filtering a little more, feels like it's
> close...
> (I also tried to put film_id in the parens after filter and got a "too
> many values" error.)
> So much to learn, thanks for all your help,
> Wendy
>
> On Aug 16, 4:00 pm, Nick Serra <nickse...@gmail.com> wrote:
>
> > In your view do:
>
> > filmmakeritems =
> > FilmmakerPosition.objects.filter(film=the_film).order_by('position')
>
> > Pass that into your template. Then in your template do:
>
> > {% for item in filmmakeritems %}
> > Name: {{ item.filmmaker.first_name }}
> > {% endfor %}
>
> > Etc...
>
> > On Aug 16, 6:12 pm, Wendy <we...@mutantfactory.com> wrote:
>
> > > Sure, it's pretty big, here are the relevant fields pulled out:
> > > class Filmmaker (models.Model):
> > >         first_name = models.CharField(max_length=30)
> > >         last_name = models.CharField(max_length=40)
>
> > >         def __unicode__(self):
> > >                 return u'%s %s' % (self.first_name, self.last_name)
>
> > > class Film(models.Model):
> > >         title = models.CharField(max_length=180)
> > >         slug = models.SlugField(unique=True)
> > >         #filmmakers = models.ManyToManyField(Filmmaker)
> > >         topics = models.ManyToManyField(Topic, blank=True)
>
> > >         def __unicode__(self):
> > >                 return self.title
>
> > > class FilmmakerPosition(models.Model):
> > >          filmmaker = models.ForeignKey(Filmmaker)
> > >          film = models.ForeignKey(Film)
> > >          position = models.IntegerField()
>
> > > --------------------------
>
> > > In admin.py:
>
> > > class FilmmakerPositionInline(admin.TabularInline):
> > >         model = FilmmakerPosition
>
> > > class FilmAdmin(admin.ModelAdmin):
> > >         inlines = [
> > >                 FilmmakerPositionInline,
> > >         ]
> > > ... (there's more)
>
> > > ---------------------------------------
>
> > > Anyway, this was what I was using in my template when filmmakers was a
> > > many to many relationship with film (commented out in the model
> > > stuff):
> > > by {% with film.filmmakers.all as filmmakers %}
> > >                         {% for filmmaker in filmmakers %}
> > >                            {% if filmmakers|length > 2 and not 
> > > forloop.first %}, {% endif
> > > %}
> > >                            {% if forloop.last and not forloop.first %}and 
> > > {% endif %}
> > >                               {{filmmaker.first_name }} 
> > > {{filmmaker.last_name}}
> > >                         {% endfor %}
> > >                   {% endwith %}
>
> > > Thanks,
> > > Wendy
>
> > > On Aug 16, 2:13 pm, Nick Serra <nickse...@gmail.com> wrote:
>
> > > > Can you list your models.py for me? What exactly do you want to show
> > > > in your template? I'm guessing some sort of WHERE clause, like all
> > > > filmmakers for a film or something.
>
> > > > On Aug 16, 5:08 pm, Wendy <we...@mutantfactory.com> wrote:
>
> > > > > OK, I have the inline solution working in the admin, I can see why
> > > > > it's prettier!
> > > > > Now I'm trying to figure out how to refer to these filmmakers in my
> > > > > film list template, as there is no longer a film.filmmakers object...
> > > > > So when I look in mysql, films_filmmakerposition has an id, a
> > > > > filmmaker id, a film id and a position.
> > > > > My Filmmaker Object has a first name and last name.
> > > > > I'm not sure where to start on this one, any help would be greatly
> > > > > appreciated.
> > > > > Thanks,
> > > > > Wendy
>
> > > > > On Aug 16, 12:45 pm, Wendy <we...@mutantfactory.com> wrote:
>
> > > > > > Thanks, Nick, I just figured that out, doh!  So I got the first
> > > > > > example going, I guess I'll try the inline solution as well, if it's
> > > > > > the pretty way to do it...  It'll be good for me to actually see 
> > > > > > what
> > > > > > they both do.
> > > > > > W
>
> > > > > > On Aug 16, 12:28 pm, Nick Serra <nickse...@gmail.com> wrote:
>
> > > > > > > The inline solution is the pretty way to do it. If you just want 
> > > > > > > the
> > > > > > > join to show up in the admin, then simply register the join model 
> > > > > > > in
> > > > > > > the admin like any other model. In your admin,py include
> > > > > > > FilmmakerPosition and then do 
> > > > > > > admin.site.register(FilmmakerPosition)
>
> > > > > > > On Aug 16, 3:24 pm, Wendy <we...@mutantfactory.com> wrote:
>
> > > > > > > > Thanks Nick,
> > > > > > > > I tried the first solution first.
> > > > > > > > You're right, the many to manys aren't editable on that page, 
> > > > > > > > but the
> > > > > > > > problem is, I'm not seeing another admin page for the new join 
> > > > > > > > model:
>
> > > > > > > > class FilmmakerPosition(models.Model):
> > > > > > > >          filmmaker = models.ForeignKey(Filmmaker)
> > > > > > > >          film = models.ForeignKey(Film)
> > > > > > > >          position = models.IntegerField()
> > > > > > > > ----------------------------------------------------
> > > > > > > > (it is in the db)
> > > > > > > > so there's no way I can assign filmmakers to a film in the 
> > > > > > > > admin.
> > > > > > > > In the Film class it specifies:
> > > > > > > > --------------------
> > > > > > > > filmmakers = models.ManyToManyField(Filmmaker,
> > > > > > > > through='FilmmakerPosition')
> > > > > > > > --------------------
>
> > > > > > > > Am I missing something?
>
> > > > > > > > I was slightly more intimidated by the inline example, as I'm 
> > > > > > > > not sure
> > > > > > > > I want to scrap the many to many relationship.  (there are lots 
> > > > > > > > of
> > > > > > > > films that have multiple filmmakers and vice versa, and I'd 
> > > > > > > > like to be
> > > > > > > > able to list them on both ends)  I'm still trying to wrap my 
> > > > > > > > head
> > > > > > > > around how I could do that with this example.
>
> > > > > > > > If anyone has anything else to add that would help me 
> > > > > > > > understand it
> > > > > > > > better, I'd really appreciate it.
>
> > > > > > > > Thanks,
> > > > > > > > Wendy
>
> > > > > > > > On Aug 13, 10:03 am, Nick Serra <nickse...@gmail.com> wrote:
>
> > > > > > > > > You can go two directions with this. First, you could use a
> > > > > > > > > intermediate model for the many to many join, which would 
> > > > > > > > > allow you to
> > > > > > > > > specify extra field on the join, in this case the order. Read 
> > > > > > > > > up on
> > > > > > > > > this 
> > > > > > > > > here:http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-o...
>
> > > > > > > > > The problem with solution one is that the many to many won't 
> > > > > > > > > be
> > > > > > > > > editable on that page anymore.
>
> > > > > > > > > Solution two would be to scrap the manytomany and use inline 
> > > > > > > > > models
> > > > > > > > > instead. You would make an intermediate model, say 
> > > > > > > > > FilmmakerItem,
> > > > > > > > > which would foreign key to the model you want to join to, and 
> > > > > > > > > a
> > > > > > > > > foreign key to the filmmaker, and would have a field for 
> > > > > > > > > order. This
> > > > > > > > > would be editable in the admin under the same page.
>
> > > > > > > > > Read about inline 
> > > > > > > > > here:http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodelad...
>
> > > > > > > > > On Aug 13, 12:52 pm, Wendy <we...@mutantfactory.com> wrote:
>
> > > > > > > > > > I have a many to many field, with the horizontal available 
> > > > > > > > > > and chosen
> > > > > > > > > > boxes in the admin.  I wanted to see if there's any way 
> > > > > > > > > > that an admin
> > > > > > > > > > can select the order that the chosen objects show up, and 
> > > > > > > > > > have it be
> > > > > > > > > > saved and display that way.  Right now, they're not 
> > > > > > > > > > ordered, but seem
> > > > > > > > > > to show up based on when the object was created.  So I'm 
> > > > > > > > > > choosing
> > > > > > > > > > filmmakers for a film, and the only way I can change the 
> > > > > > > > > > order is to
> > > > > > > > > > destroy the filmmaker objects, then recreate and add them 
> > > > > > > > > > in a
> > > > > > > > > > different order, something that obviously wouldn't work in 
> > > > > > > > > > the real
> > > > > > > > > > world.  Is there any way to save the order in the chosen 
> > > > > > > > > > box in the
> > > > > > > > > > admin?
>
> > > > > > > > > > Thanks,
> > > > > > > > > > Wendy

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to