On Wed, Nov 17, 2010 at 11:36 PM, Jonas Geiregat <jo...@geiregat.org> wrote:
> Hello,
>
>  Can I use django's generic relations to create a model (GenericPost) that 
> can point to other model (APost) or model (ReviewPost) ?
>  And then use this GenericPost model to get a list of all latest APost's and 
> ReviewPost's ?
>
> I've been trying this all day long but I couldn't get around the API.
>
> Here's what I've done:
>
> from django.db import models
> from django.contrib.contenttypes.models import ContentType
> from django.contrib.contenttypes import generic
>
>
> # Create your models here.
>
> class Post(models.Model):
>    title = models.CharField(max_length=100)
>
>    class Meta:
>        abstract = True
>
> class APost(Post):
>    content = models.CharField(max_length=100)
>
> class Review(Post):
>    rcontent = models.CharField(max_length=100)
>
> class GenericPost(models.Model):
>    content_type = models.ForeignKey(ContentType)
>    object_id = models.PositiveIntegerField()
>    content_object = generic.GenericForeignKey('content_type', 'object_id')
>
>
> Some shell code trying to build up some data:
>
> In [1]: from genericv.foo.models import APost, GenericPost, Review
>
> In [2]: a = APost(content="something")
>
> In [3]: a.save()
>
> In [4]: g = GenericPost(content_object=a)
>
> In [5]: g.save()
>
> In [6]: GenericPost.objects.all()
> Out[6]: [<GenericPost: GenericPost object>, <GenericPost: GenericPost 
> object>, <GenericPost: GenericPost object>, <GenericPost: GenericPost object>]
>
>
>
> Why is it that I have 4 objects already when I only have created one ?

I don't know, but I try your code and I get only one object:

>>> GenericPost.objects.all()
[<GenericPost: GenericPost object>]

>And how do I access that particular object by using the GenericPost model ?

I'm not a master of generic relations and I donk now if this way is
the best of, but you can use content_object manager for retrieve the
object:
>>> GenericPost.objects.get(pk=1).content_object.content
u'something'



>



-- 
Marc

-- 
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