Re: model can return a count but no data

2012-03-18 Thread Maarten Japink
Great! this works. Thank you so much Kevin.


2012/3/18 Kevin Wetzels 

>
> On Sunday, March 18, 2012 12:55:31 PM UTC+1, Maarten Japink wrote:
>>
>> I 'm working on a taxonomie.
>> These are my models:
>>
>> class Classificatie(models.Model):
>> name=models.CharField(max_**length=60)
>>
>> def __unicode__(self):
>> return self.name
>>
>> class Taxonomie(models.Model):
>> name=models.CharField(max_**length=60)
>> level=models.ForeignKey(**Classificatie)
>> parent=models.ForeignKey('**self', related_name='parent_id' )
>> synoniem=models.ForeignKey('**self',
>> related_name='synoniem_id' ,blank=True, null=True)
>>
>> I populated the tabels in postgresql
>>
>> When I do:
>> >>>Taxonomie.objects.count()
>> I get the proper number of rows (593)
>>
>> but when i want to read a single object with:
>> >>> t=Taxonomie.objects.get(id=20)
>> Traceback (most recent call last):
>>   File "", line 1, in 
>>   File "C:\Python27\lib\site-**packages\django\db\models\**manager.py",
>> line 132, in
>>  get
>> return self.get_query_set().get(***args, **kwargs)
>>   File "C:\Python27\lib\site-**packages\django\db\models\**query.py",
>> line
>> 344, in g
>> et
>> num = len(clone)
>>   File "C:\Python27\lib\site-**packages\django\db\models\**query.py",
>> line
>> 82, in __
>> len__
>> self._result_cache = list(self.iterator())
>>   File "C:\Python27\lib\site-**packages\django\db\models\**query.py",
>> line
>> 286, in i
>> terator
>> obj = model(*row[index_start:**aggregate_start])
>>   File "C:\Python27\lib\site-**packages\django\db\models\**base.py",
>> line
>> 297, in __
>> init__
>> setattr(self, field.attname, val)
>>   File "C:\Python27\lib\site-**packages\django\db\models\**fields
>> \related.py", line
>> 402, in __set__
>> manager.add(*value)
>> TypeError: add() argument after * must be a sequence, not int
>>
>>
>> I also tried the Taxonomie model with both ' self ' Foreignkey set to
>> blank=True and null=True
>> gives me the same problem. I also can't make new taxonomie objects
>> with django
>>
>>
>> What am I doiing wrong?
>>
>>
> You're using the implicit column_name as the related_name on the
> self-referencing FKs. Django will generate a column name from the name of
> your field, which means parent_id and synoniem_id columns will be used.
> Then you decide to use those as the related_name for the corresponding
> ForeignKey. This won't cause a problem when you perform a count since in
> that case no model instances need to be loaded; it's simply a query that's
> executed.
>
> This works and is more inline with what you should expect of a related
> name:
>
> class Taxonomie(models.Model):
> name=models.CharField(max_length=60)
> level=models.ForeignKey(Classificatie)
> parent=models.ForeignKey('self', related_name='parents' ,blank=True,
> null=True)
> synoniem=models.ForeignKey('self', related_name='synoniemen'
> ,blank=True, null=True)
>
> By the way: if you can, you're better off using English for your code
> rather than Dutch.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/django-users/-/Icc1RBqovDcJ.
> To post to this group, send email to django-users@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.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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.



Re: model can return a count but no data

2012-03-18 Thread Kevin Wetzels
 
On Sunday, March 18, 2012 12:55:31 PM UTC+1, Maarten Japink wrote:
>
> I 'm working on a taxonomie. 
> These are my models: 
>
> class Classificatie(models.Model): 
> name=models.CharField(max_length=60) 
>
> def __unicode__(self): 
> return self.name 
>
> class Taxonomie(models.Model): 
> name=models.CharField(max_length=60) 
> level=models.ForeignKey(Classificatie) 
> parent=models.ForeignKey('self', related_name='parent_id' ) 
> synoniem=models.ForeignKey('self', 
> related_name='synoniem_id' ,blank=True, null=True) 
>
> I populated the tabels in postgresql 
>
> When I do: 
> >>>Taxonomie.objects.count() 
> I get the proper number of rows (593) 
>
> but when i want to read a single object with: 
> >>> t=Taxonomie.objects.get(id=20) 
> Traceback (most recent call last): 
>   File "", line 1, in  
>   File "C:\Python27\lib\site-packages\django\db\models\manager.py", 
> line 132, in 
>  get 
> return self.get_query_set().get(*args, **kwargs) 
>   File "C:\Python27\lib\site-packages\django\db\models\query.py", line 
> 344, in g 
> et 
> num = len(clone) 
>   File "C:\Python27\lib\site-packages\django\db\models\query.py", line 
> 82, in __ 
> len__ 
> self._result_cache = list(self.iterator()) 
>   File "C:\Python27\lib\site-packages\django\db\models\query.py", line 
> 286, in i 
> terator 
> obj = model(*row[index_start:aggregate_start]) 
>   File "C:\Python27\lib\site-packages\django\db\models\base.py", line 
> 297, in __ 
> init__ 
> setattr(self, field.attname, val) 
>   File "C:\Python27\lib\site-packages\django\db\models\fields 
> \related.py", line 
> 402, in __set__ 
> manager.add(*value) 
> TypeError: add() argument after * must be a sequence, not int 
>
>
> I also tried the Taxonomie model with both ' self ' Foreignkey set to 
> blank=True and null=True 
> gives me the same problem. I also can't make new taxonomie objects 
> with django 
>
>
> What am I doiing wrong? 
>
>
You're using the implicit column_name as the related_name on the 
self-referencing FKs. Django will generate a column name from the name of 
your field, which means parent_id and synoniem_id columns will be used. 
Then you decide to use those as the related_name for the corresponding 
ForeignKey. This won't cause a problem when you perform a count since in 
that case no model instances need to be loaded; it's simply a query that's 
executed.

This works and is more inline with what you should expect of a related name:

class Taxonomie(models.Model):
name=models.CharField(max_length=60)
level=models.ForeignKey(Classificatie)
parent=models.ForeignKey('self', related_name='parents' ,blank=True, 
null=True)
synoniem=models.ForeignKey('self', related_name='synoniemen' 
,blank=True, null=True)  

By the way: if you can, you're better off using English for your code 
rather than Dutch.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/django-users/-/Icc1RBqovDcJ.
To post to this group, send email to django-users@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.



model can return a count but no data

2012-03-18 Thread Maarten Japink
I 'm working on a taxonomie.
These are my models:

class Classificatie(models.Model):
name=models.CharField(max_length=60)

def __unicode__(self):
return self.name

class Taxonomie(models.Model):
name=models.CharField(max_length=60)
level=models.ForeignKey(Classificatie)
parent=models.ForeignKey('self', related_name='parent_id' )
synoniem=models.ForeignKey('self',
related_name='synoniem_id' ,blank=True, null=True)

I populated the tabels in postgresql

When I do:
>>>Taxonomie.objects.count()
I get the proper number of rows (593)

but when i want to read a single object with:
>>> t=Taxonomie.objects.get(id=20)
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Python27\lib\site-packages\django\db\models\manager.py",
line 132, in
 get
return self.get_query_set().get(*args, **kwargs)
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line
344, in g
et
num = len(clone)
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line
82, in __
len__
self._result_cache = list(self.iterator())
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line
286, in i
terator
obj = model(*row[index_start:aggregate_start])
  File "C:\Python27\lib\site-packages\django\db\models\base.py", line
297, in __
init__
setattr(self, field.attname, val)
  File "C:\Python27\lib\site-packages\django\db\models\fields
\related.py", line
402, in __set__
manager.add(*value)
TypeError: add() argument after * must be a sequence, not int


I also tried the Taxonomie model with both ' self ' Foreignkey set to
blank=True and null=True
gives me the same problem. I also can't make new taxonomie objects
with django


What am I doiing wrong?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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.