Hello.

I'm trying to get a generic foreign key to work with Django REST Framework, 
a very simple case, but I can't get it to work, I always get this error 
when trying to access the API:

'GenericForeignKey' object has no attribute 'get_lookup'

Here is the code I am using :

class Favorite(models.Model):
    """
    Favorited object by an user
    """
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
verbose_name=_('User'), editable=False, db_index=True)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    object = GenericForeignKey('content_type', 'object_id')
    date_of_favorite = models.DateTimeField(verbose_name=_('Favorite 
date'), auto_now_add=True, db_index=True)


class Rating(models.Model):
    """
    Rated object by an user
    """
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
verbose_name=_('User'), editable=False, db_index=True)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    object = GenericForeignKey('content_type', 'object_id')
    date_of_favorite = models.DateTimeField(verbose_name=_('Rating date'), 
auto_now_add=True, db_index=True)

class FavoriteSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False)
    object = GenericRelatedField({
        Recipe: HyperlinkedRelatedField(many=False, 
view_name='recipe-detail', read_only=True),
        Ingredient: HyperlinkedRelatedField(many=False, 
view_name='ingredient-detail', read_only=True),
        Utensil: HyperlinkedRelatedField(many=False, 
view_name='utensil-detail', read_only=True)
    })

    class Meta:
        model = Favorite
        fields = ('user', 'object', 'date_of_favorite')


class RatingSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False)
    object = GenericRelatedField({
        Recipe: HyperlinkedRelatedField(many=False, 
view_name='recipe-detail', read_only=True),
        Ingredient: HyperlinkedRelatedField(many=False, 
view_name='ingredient-detail', read_only=True),
        Utensil: HyperlinkedRelatedField(many=False, 
view_name='utensil-detail', read_only=True)
    })

    class Meta:
        model = Rating
        fields = ('user', 'object', 'date_of_rating')


class RatingViewSet(viewsets.ModelViewSet):
    queryset = Rating.objects.all()
    serializer_class = RatingSerializer
    filter_fields = ('user', 'object', 'content_type', 'object_id')


class FavoriteViewSet(viewsets.ModelViewSet):
    queryset = Favorite.objects.all()
    serializer_class = FavoriteSerializer
    filter_fields = ('user', 'object')

Am I doing something wrong ?

Thank you.

Best regards,
Mathieu

-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to