Thanks Nick, I guess I'll be passing that value, that makes sense. I'm using a generic view to write the list page, I'll read up more on the queries, thanks for all your help, Wendy
On Aug 16, 9:55 pm, Nick Serra <nickse...@gmail.com> wrote: > 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.