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 "<console>", line 1, in <module> > 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.