I had the same issue, fixed it with a variation on Jim D.'s solution.

import bookmarks

then bookmarks.models.Bookmark.objects.filter(...)

On Tuesday, October 14, 2008 11:38:20 PM UTC-7, Chris Amico wrote:
>
> I have a simple bookmarks model based on the one in James Bennett's <a 
> href="http://code.google.com/p/cab/source/browse/trunk/models.py? 
> r=130 
> <http://code.google.com/p/cab/source/browse/trunk/models.py?r=130>">Cab</a> 
> application. I'm using a generic relation so it can 
> live in its own app and a user can bookmark any object on the site 
> (I'm planning on reusing this app on a couple projects). I'm running 
> into a problem creating an {% if_bookmarked %} template tag. 
>
> When I load the tag library I get this error: 'bookmarks' is not a 
> valid tag library: Could not load template library from 
> django.templatetags.bookmarks, No module named models 
>
> Here's what the tag module looks like: 
>
> from django import template 
> from django.contrib.contenttypes.models import ContentType 
> from bookmarks.models import Bookmark 
>
>
> class IfBookmarkedNode(template.Node): 
>     def __init__(self, user, obj, nodelist_true, nodelist_false): 
>         self.nodelist_true = nodelist_true 
>         self.nodelist_false = nodelist_false 
>         self.user_id = template.Variable(user_id) 
>         self.obj = template.Variable(obj) 
>
>     def render(self, context): 
>         try: 
>             self.user_id = template.resolve_variable(self.user_id, 
> context) 
>             self.obj = template.resolve_variable(self.obj, context) 
>         except template.VariableDoesNotExist: 
>             return '' 
>         ctype = ContentType.objects.get_for_model(obj) 
>         if Bookmark.objects.filter(content_type=ctype, 
> object_id=obj.id, user__pk=user_id.id): 
>             return self.nodelist_true.render(context) 
>         else: 
>             return self.nodelist_false.render(context) 
>
>
> def do_if_bookmarked(parser, token): 
>     bits = token.contents.split() 
>     if len(bits) != 3: 
>         raise template.TemplateSyntaxError("'%s' tag takes exactly two 
> arguments" % bits[0]) 
>     nodelist_true = parser.parse(('else', 'endif_bookmarked')) 
>     token = parser.next_token() 
>     if token.contents == 'else': 
>         nodelist_false = parser.parse(('endif_bookmarked',)) 
>         parser.delete_first_token() 
>     else: 
>         nodelist_false = template.NodeList() 
>     return IfBookmarkedNode(bits[1], bits[2], nodelist_true, 
> nodelist_false) 
>
>
> And this is the model it should be importing: 
>
>
> class Bookmark(models.Model): 
>     "A bookmarked item, saved by a user with a timestamp" 
>     # generic relation 
>     content_type = models.ForeignKey(ContentType) 
>     object_id = models.PositiveIntegerField() 
>     content_object = generic.GenericForeignKey('content_type', 
> 'object_id') 
>
>     # who and when 
>     user = models.ForeignKey(User) 
>     timestamp = models.DateTimeField(auto_now_add=True) 
>
>
>
> The bookmarking model works fine on its own, and I've gotten the 
> functions in the template tag to work in isolation in the interpreter, 
> but when I load the tag library it breaks the template. What am I 
> missing here?

-- 
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/-/Gqnjk38KVP0J.
To post to this group, send email to django-users@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