The error in save, not in constructor, seems you need to set dome default value to Team instances, not quite sure
On Sat, Feb 5, 2011 at 2:29 PM, Daniel Klein <bri...@gmail.com> wrote: > I'm teaching myself django by idling poking at a project in the hope that > it may become a playable browser game some day. It's early days. > > So I have a model "Game", which is one game session. Each game is supposed > to have two teams. I doubt the content of the Team model matters very much, > so I'll just paste the relevant bits from Game: > > class Game(models.Model): > > team1 = models.OneToOneField(Team, related_name="team1", null=True) > > team2 = models.OneToOneField(Team, related_name="team2", null=True) > > > > def __init__(self, *args, **kwargs): > > super(Game, self).__init__(self, *args, **kwargs) > > self.team1 = Team() > > self.team2 = Team() > > > The code I used to have, which worked, manually created a game and its two > teams. This was in the view for the "create new game" page, which I found > all kinds of ugly. Since every game should start out with exactly two teams > in it, it makes most sense to have that code inside the Game model, right? > > So here's the error I'm currently getting when I try to save a game: > > >>> from game.models import Team, Game > > >>> tg = Game(name="testgame") > > >>> tg.save() > > Traceback (most recent call last): > > File "<console>", line 1, in <module> > > File "c:\coding\django-1.1.1\django\db\models\base.py", line 410, in save > > self.save_base(force_insert=force_insert, force_update=force_update) > > File "c:\coding\django-1.1.1\django\db\models\base.py", line 470, in > save_base > > manager.filter(pk=pk_val).extra(select={'a': > 1}).values('a').order_by())): > > File "c:\coding\django-1.1.1\django\db\models\manager.py", line 129, in > filter > > return self.get_query_set().filter(*args, **kwargs) > > File "c:\coding\django-1.1.1\django\db\models\query.py", line 498, in > filter > > return self._filter_or_exclude(False, *args, **kwargs) > > File "c:\coding\django-1.1.1\django\db\models\query.py", line 516, in > _filter_or_exclude > > clone.query.add_q(Q(*args, **kwargs)) > > File "c:\coding\django-1.1.1\django\db\models\sql\query.py", line 1675, > in add_q > > can_reuse=used_aliases) > > File "c:\coding\django-1.1.1\django\db\models\sql\query.py", line 1614, > in add_filter > > connector) > > File "c:\coding\django-1.1.1\django\db\models\sql\where.py", line 56, in > add > > obj, params = obj.process(lookup_type, value) > > File "c:\coding\django-1.1.1\django\db\models\sql\where.py", line 269, in > process > > params = self.field.get_db_prep_lookup(lookup_type, value) > > File "c:\coding\django-1.1.1\django\db\models\fields\__init__.py", line > 210, in get_db_prep_lookup > > return [self.get_db_prep_value(value)] > > File "c:\coding\django-1.1.1\django\db\models\fields\__init__.py", line > 361, in get_db_prep_value > > return int(value) > > TypeError: int() argument must be a string or a number, not 'Game' > > > I have no idea what this error means, and I strongly suspect I'm Doing It > Wrong [tm] in the first place. There's probably a very easy way to do this > that I'm not seeing. > > > Thanks! > > -- > 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<django-users%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- =========================== Regards Ronghui Yu -- 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.