On Monday, 14 January 2013 10:44:06 UTC, joy wrote:
> it's the first time i try using the model property so probably i'm doing
> something wrong.
> This is the model file:
>
> from django.db import models
>
> # Create your models here.
>
> class Pop(models.Model):
> name = models.CharField(max_length=10)
> content = models.TextField(blank=True, null=True)
>
> def __unicode__(self):
> return self.name
>
> class Text(models.Model):
> pag = models.CharField(max_length=20)
> content = models.TextField(blank=True, null=True)
> popup = models.ManyToManyField(Pop, blank=True, null=True)
>
> def __unicode__(self):
> return self.pag
>
> And this is the template:
>
> <!doctype html>
> <html lang="it">
> <head>
> <meta charset="utf-8">
> <meta name="viewport" content="width=800">
> <link rel="icon" href="/static/img/standard.gif" sizes="16x16"
> type="image/gif">
> <link rel="icon" href="/static/img/iphone.png" sizes="57x57"
> type="image/png">
> <link rel="icon" href="/static/img/vector.svg" sizes="any"
> type="image/svg+xml">
> <link rel="stylesheet" href="http://joy.indivia.net/css/style.css">
> <script type="text/javascript" src="http://joy.indivia.net/js/cookie.js
> "></script>
> <script type="text/javascript" src="
> http://joy.indivia.net/js/html5shiv.js"></script>
> <script type="text/javascript" src="http://joy.indivia.net/js/avgrund.js
> "></script>
> <script type="text/javascript" src="
> http://ajax.googleapis.com/ajax/libs/prototype/1.7/prototype.js"></script>
>
> </head>
> <body>
> <header>
> <h1>MADE IN HUMAN</h1>
> </header>
> {% for t in text %}
> <article id="content" class="avgrund-contents"> {{ t.content|safe
> }}</article>
> {% endfor %}
> <div class="avgrund-cover"></div>
> {% if text.popup_set.all %}
> {% for p in text.popup_set.all %}
> <script>
> var openDialog = function(){
> Avgrund.show( "{{p.name}}" );
> };
> function closeDialog() {
> Avgrund.hide();
> };
> document.observe('dom:loaded', function(){
> $('content').on('click', 'a', openDialog());
> };
> </script>
> <aside id="{{p.name}}" class="avgrund-popup">
> {{ p.content|safe }}
> <button
> onclick="javascript:closeDialog();">Close</button>
> </aside>
> {% endfor %}{% endif %}
> <footer>
> <dl>
> </dl>
> </footer>
> </body>
> </html>
>
>
> After the if statement probably nothing gets executed, so probably
> text.popup_set.all doesn't work, even if there are pops in the popup field
> of the text passed to the html file by a render to response call....
> Someone that speaks django dialect better than me can explain me what i'm
> doing wrong?
> Thanks
>
>
>
It's hard to tell without seeing your view. What exactly is `text` here? Is
it a single Text instance, or a queryset of many of them? The first `for`
loop seems to imply the latter, but then you try and access text.popups
which implies it's a single instance.
In any case, you don't need the _set. That's just for reverse
relationships, whereas you're accessing a relationship that's defined on
the Text model itself, so you just use the field name: {% for p in
text.popup.all %}.
Note that the `if` block is unnecessary and will cause an extra database
query for no reason. If the queryset is empty, the for loop will simply not
enter.
--
DR.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/django-users/-/ihslEdGd_i4J.
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.