Re: model can return a count but no data
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
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
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.