Honestly, now Idea why you get this error, can you paste some more code? 
And maybe some stack trace?

On Friday, August 5, 2016 at 2:20:25 PM UTC+3, M Hashmi wrote:
>
> 1.8.13 as its LTS.
>
> On Fri, Aug 5, 2016 at 3:54 AM, Todor Velichkov <[email protected] 
> <javascript:>> wrote:
>
>> Whats your Django version?
>>
>> On Friday, August 5, 2016 at 1:42:48 PM UTC+3, M Hashmi wrote:
>>>
>>> I did the same thing while working with the contenttype except I did 
>>> used default filters .all(), .filter(), .get(), annotations and 
>>> aggregations etc. Todor each product shows multiple hits if I log out and 
>>> hit it and login back to hit it shows more than one hits. Hits are being 
>>> recoreded for each session. It shows the same error as it is showing now 
>>> after implementing GenericRelations:
>>>
>>> AttributeError at / 'GenericForeignKey' object has not attribute 
>>> 'get_lookup'.
>>>
>>> If I mix it with .aggregate(Max, Count, Avg or Sum) queryset options it 
>>> will pop up "unhashable type". 
>>>
>>> I am working on joins methods in django with hope that it will make it 
>>> work. I really appreciate your help guys. You both rock and I've learned a 
>>> lot with your directions. Still if you have ideas please let me know I will 
>>> try those too. 
>>>
>>> Regards, 
>>> Mudassar
>>>
>>> On Fri, Aug 5, 2016 at 1:04 AM, Todor Velichkov <[email protected]> 
>>> wrote:
>>>
>>>> Constantine Covtushenko, 
>>>>
>>>> HitCount is a model from a 3rd party app, so the OP can't change it. 
>>>>
>>>> However the way HitCount is implemented I don't think one there is a 
>>>> way for one product to have more than one `HitCount` objects. 
>>>> So I don't think any aggregations are needed. 
>>>>
>>>> Lets the Product class look like this:
>>>>
>>>> class Product(models.Model):
>>>>     #im changing this on purpose, because it points to HitCount class.
>>>>     hitcounts = GenericRelation(HitCount, content_type_field=
>>>> 'content_object', object_id_field='object_pk',)
>>>>
>>>> Now `HitCount` has a separate `Hit` class  which hold all individual 
>>>> hits for a `product`. 
>>>>
>>>> The app model structure is here. 
>>>> <https://github.com/thornomad/django-hitcount/blob/master/hitcount/models.py>
>>>>
>>>> So to get top products by overall hits you can use `HitCount.hits` 
>>>> field, without any `aggregations`, `annotations` or whatsoever.
>>>>
>>>> top_products_by_total_hits = Product.objects.order_by('hitcounts__hits'
>>>> )[:6]
>>>>
>>>> Now if you want to get the number of hits for a product for some period 
>>>> of range (lets say a week). Then we need to use the `Hit` model.
>>>>
>>>> top_products_by_last_week_hits = Product.objects.filter(
>>>>         hitcounts__hit__created__gte=today-timedelta(days=7)
>>>>     ).annotate(
>>>>         last_week_hits=Count('hitcounts__hit')
>>>>     ).order_by('-last_week_hits')[:6]
>>>>
>>>> Hope this helps and things get clear now.
>>>>
>>>> On Friday, August 5, 2016 at 8:44:02 AM UTC+3, Constantine Covtushenko 
>>>> wrote:
>>>>>
>>>>> Hi M Hashmi,
>>>>>
>>>>> I believe that you are looking a way to use aggregation on related 
>>>>> model.
>>>>> You should try the following snitppet:
>>>>> `trending_products = Product.objects.aggregate(hit=Max(
>>>>> 'hits__hits'))[:6]` (see more info here 
>>>>> <https://docs.djangoproject.com/en/1.9/topics/db/aggregation/>)
>>>>>
>>>>> This will give you list of products where each product will have 'hit' 
>>>>> is the MAX value of all hits set for this product.
>>>>>
>>>>> Also I do not see any reason to use 'ContentType' relation from your 
>>>>> HitCount model at all.
>>>>> If your origin intent was to have hits with any Model in your 
>>>>> system(project) then you should built 'joins with aggregation' queries 
>>>>> based on Reverse Generic Relation as said Todor. But in this case Product 
>>>>> hits field becomes unnecessary as it duplicates relations.
>>>>>
>>>>> On Fri, Aug 5, 2016 at 5:59 AM, M Hashmi <[email protected]> wrote:
>>>>>
>>>>>> Hello Todor,
>>>>>>
>>>>>> I followed your directions and used 
>>>>>> https://docs.djangoproject.com/ja/1.9/ref/contrib/contenttypes/ for 
>>>>>> reference but I got stuck at error 'GenericForeignKey' object has not 
>>>>>> attribute 'get_lookup'. I tried 
>>>>>> Product.objects.aggregate(Count('hits'))[:6]. In my models.py I got 
>>>>>> following code:
>>>>>>
>>>>>> hits = GenericRelation(HitCount, content_type_field='content_object', 
>>>>>> object_id_field='object_pk',)
>>>>>>
>>>>>>     class Meta:
>>>>>>         ordering = ["-title"]
>>>>>> Removed the -hits from ordering section and rest of the code is same. 
>>>>>> I searched it on google but it showed some Django based bugs.
>>>>>> Any suggestions?
>>>>>> Thanks,
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thursday, August 4, 2016 at 2:07:53 PM UTC-7, Todor Velichkov 
>>>>>> wrote:
>>>>>>>
>>>>>>> My field hits=models.ForeignKey(Hitcount) means that my Product 
>>>>>>>> model has a related  model with multiple fields and all the products 
>>>>>>>> in 
>>>>>>>> Product model will have one or more hit records. Instance of Product 
>>>>>>>> model 
>>>>>>>> will save a hit from end user by session/ip/user etc.
>>>>>>>
>>>>>>> Honestly, I don't understand that. 
>>>>>>>
>>>>>>> The HitCount class already has a GenericForeignKey, maybe you are 
>>>>>>> looking for a Reverse Generic Relation 
>>>>>>> <https://docs.djangoproject.com/ja/1.9/ref/contrib/contenttypes/#reverse-generic-relations>
>>>>>>>  
>>>>>>> class in order to get the Hits for a product.
>>>>>>>
>>>>>>> On Thursday, August 4, 2016 at 10:42:58 PM UTC+3, M Hashmi wrote:
>>>>>>>>
>>>>>>>> My field hits=models.ForeignKey(Hitcount) means that my Product 
>>>>>>>> model has a related  model with multiple fields and all the products 
>>>>>>>> in 
>>>>>>>> Product model will have one or more hit records. Instance of Product 
>>>>>>>> model 
>>>>>>>> will save a hit from end user by session/ip/user etc.
>>>>>>>>
>>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "Django users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/django-users/2a7be23a-c227-460d-89f2-d7ffd52d4123%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/django-users/2a7be23a-c227-460d-89f2-d7ffd52d4123%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/django-users.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/django-users/cdc4459f-0f03-4fcd-876e-814b25b241c0%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/django-users/cdc4459f-0f03-4fcd-876e-814b25b241c0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/0e1140b5-5971-43d3-8a9f-0e81c3fa8a4c%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/0e1140b5-5971-43d3-8a9f-0e81c3fa8a4c%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/cf6710ef-cde9-48f0-b50f-b06e49cbbc2b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to