ojii / django-multilingual-ng

THIS PROJECT IS *NOT* SUPPORTED AND SHOULD NOT BE USED UNLESS YOU KNOW EXACTLY WHAT YOU'RE DOING!!!

Home Page:https://github.com/KristianOellegaard/django-hvad

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

F Object + Multilingual = instancemethod expected at least 2 arguments, got 0

geomin opened this issue · comments

Hi,

i ran into a problem with Django F objects and multilingual-ng, we have the follow models:

Django: 1.3 pre-alpha and 1.2.1 release
multilingual-ng: 0.1.45

models.py:

==================================================================

from django.contrib.auth.models import User
from django.db import models
import multilingual
from django.db.models.aggregates import Sum
from django.db.models import F, Q

class AccountType(models.Model):
class AccountTypeTranslation(multilingual.translation.TranslationModel):
name = models.CharField(max_length=32)

class UserProfileManager(models.Manager):
def explode(self):
profiles = self.get_query_set()#UserProfile.objects.all()
profiles = profiles.annotate(commission_sum=Sum('commission'))

    profiles = profiles.filter(commission_sum__gte=F('payout_limit'))    
    #profiles = profiles.filter(commission__gte=F('payout_limit'))

    print profiles.query
    print profiles

    return profiles

class UserProfile(models.Model):
payout_limit = models.PositiveIntegerField(default=20)
commission = models.PositiveIntegerField(default=20)
account_type = models.ForeignKey(AccountType, default=1)
user = models.ForeignKey(User)

objects = UserProfileManager() 

==================================================================

call with: UserProfile.objects.explode()

IS: instancemethod expected at least 2 arguments, got 0
SHOULD: return a valid queryset
Problem: something goes wrong in deepcopy
NOTICE: it will work as soon you delete the field "account_type"

Backtrace:

Traceback:
File "/home/georg/repository/django/core/handlers/base.py" in get_response

  1.                 response = callback(request, _callback_args, *_callback_kwargs)
    
    File "/home/georg/Projects/myreprod/views.py" in index
  2. UserProfile.objects.explode()
    
    File "/home/georg/Projects/myreprod/models.py" in explode
  3.     print profiles
    
    File "/home/georg/repository/django/db/models/query.py" in repr
  4.     data = list(self[:REPR_OUTPUT_SIZE + 1])
    
    File "/home/georg/repository/django/db/models/query.py" in getitem
  5.         qs = self._clone()
    
    File "/home/georg/repository/django/db/models/query.py" in _clone
  6.     query = self.query.clone()
    
    File "/home/georg/repository/django/db/models/sql/query.py" in clone
  7.     obj.having = deepcopy(self.having, memo=memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  8.             y = copier(memo)
    
    File "/home/georg/repository/django/utils/tree.py" in deepcopy
  9.     obj.children = deepcopy(self.children, memodict)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  10.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_list
  11.     y.append(deepcopy(a, memo))
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  12.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple
  13.     y.append(deepcopy(a, memo))
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  14.             y = _reconstruct(x, rv, 1, memo)
    
    File "/usr/lib/python2.6/copy.py" in _reconstruct
  15.         state = deepcopy(state, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  16.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_dict
  17.     y[deepcopy(key, memo)] = deepcopy(value, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  18.             y = _reconstruct(x, rv, 1, memo)
    
    File "/usr/lib/python2.6/copy.py" in _reconstruct
  19.         state = deepcopy(state, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  20.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_dict
  21.     y[deepcopy(key, memo)] = deepcopy(value, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  22.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_dict
  23.     y[deepcopy(key, memo)] = deepcopy(value, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  24.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_tuple
  25.     y.append(deepcopy(a, memo))
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  26.             y = _reconstruct(x, rv, 1, memo)
    
    File "/usr/lib/python2.6/copy.py" in _reconstruct
  27.         state = deepcopy(state, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  28.     y = copier(x, memo)
    
    File "/usr/lib/python2.6/copy.py" in _deepcopy_dict
  29.     y[deepcopy(key, memo)] = deepcopy(value, memo)
    
    File "/usr/lib/python2.6/copy.py" in deepcopy
  30.             y = _reconstruct(x, rv, 1, memo)
    
    File "/usr/lib/python2.6/copy.py" in _reconstruct
  31. y = callable(*args)
    
    File "/usr/lib/python2.6/copy_reg.py" in newobj
  32. return cls.**new**(cls, *args)
    

Exception Type: TypeError at /
Exception Value: instancemethod expected at least 2 arguments, got 0