Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Model path not found #24

Open
boutdepapier opened this issue Aug 7, 2011 · 4 comments
Open

Model path not found #24

boutdepapier opened this issue Aug 7, 2011 · 4 comments

Comments

@boutdepapier
Copy link

Hi,

Ok you can forget the 2 previous version of the issue :)

It seems Djgno-seo framework don't find my models path... When I save the fields in the admin the "path" row is blank. But If I fixe the path in the database then it works.

Any idea?

Django version: Django version 1.2.5
Python: Python 2.6.1

Thank you in advance,
Benjamin

@willhardy
Copy link
Owner

I'm not entirely sure I understand what your problem is. Does your model define get_absolute_url? Could it be that get_absolute_url fails for some reason?

@boutdepapier
Copy link
Author

Yeah you rox ! I am sorry I didn't find anything about this part in the tutorial :(

I have added in my Page model:

        def get_absolute_url(self):
            return ("page", [self.slug])

So now the frameworks works great for : "path" & "model instance" !

I still have trouble for my metadata "view" & "model" part... Do I need to add something in the view or in the urls.py to link the url/view to the model?

@nuno-iglesias
Copy link

Thanks god (every god ;-) ), no any reference to this in the docs.¿or yes?
;-)

@nuno-iglesias
Copy link

Hi again.
Some weeks ago, when i discovered this project, i manage to do exacly what is shown on this post.
Now i have no problem in fetching seo-data related to "model-instances" or "paths"....
Now i'm on another project, and i'm running in the same issue.
Really I don't think that edditing , from admin , the "path" which I want to associate the data is the best way.
One of the nicier things of this app is that a can add "matatags" to my models without needing to add any simgle line of code to the model.
So what I've tried is to use the same "populate_from", and to assign a "default value " when the is no "model_instance":

def populate_title(metadata, model_instance = None, **kwargs):
    print kwargs
    #Si la petición de meta info viene asociada a la instancia de un modelo            
    if model_instance:      
        return u'HELLA - %s -%s - '  % (model_instance._meta.verbose_name ,smart_unicode(model_instance.heading, encoding='utf-8', strings_only=False, errors='strict'))
    else:
  return 'Hella - mAIN cATEGORRY PAGE'

With this, now i have a "fallback" for this Metadatamodel, when used from my "category" template as this:

 {% block seo %}
{% load seo %}  
    {% get_metadata MyMetadata %}
 {%endblock %}

But now i'm running into another little issue (i'm sure that this is not the rigth way of facing this ...but...is the only way i havefound).

i'm trying to "reuse" the same method ("populate_title") for more than one Model. I also have more than one "SeoModel) So..i call the same "populate_from" from both SeoModels.

When the method is called i try to determine the class (model_instance) and build a diferente "tag".
The only point of doing this is having all the logic of tags assigning in one method ( outside from my app models).
The code looks like this:

 def populate_title(metadata, model_instance = None, **kwargs):
    #if model instance exists   
    if model_instance:      
        #post innovaciones
        if model_instance._meta.verbose_name == PostInnovaciones._meta.verbose_name:        
            return u'HELLA - %s -%s - '  % (model_instance._meta.verbose_name ,smart_unicode(model_instance.heading, encoding='utf-8', strings_only=False, errors='strict'))
        #novedades
        elif  model_instance._meta.verbose_name == Novedades._meta.verbose_name:
            return u'HELLA - %s -%s - '  % (model_instance._meta.verbose_name ,smart_unicode(model_instance.heading, encoding='utf-8', strings_only=False, errors='strict'))
    #if no model instance
    else:
        #post innovaciones
        if model_instance._meta.verbose_name == PostInnovaciones._meta.verbose_name:        
            return u'HELLA - %s -'  % (model_instance._meta.verbose_name )
        #novedades
        elif  model_instance._meta.verbose_name == Novedades._meta.verbose_name:
            return u'HELLA - %s -%s - '  % (model_instance._meta.verbose_name )

Obviosly the last part of the code (after "else") is not working, because the is no "model_instance".
So... i've two diferent questions:

  • Which is the right way of assigning "matainfo" to the "model" it self.
  • If there is not an answer to this ( sure there is one, but i'm to stupid to see it), ¿is there any way of finding who has called the "propulate_title" method (when no model instance is linked), so i can show create the proper "tag".

Thanks in advance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants