I get some strange values from auth.users that I hope someone can
explain.

I've extended the auth.users like so:

class User(auth.User):
  primary_group = meta.ForeignKey(auth.Group, default = 1,
                    verbose_name = 'primary group')
  new_password  = meta.CharField(maxlength = 40, blank = True)
  department    = meta.ForeignKey(Department, default = 1)
  country       = meta.ForeignKey(Country, default = 1,
                    help_text = 'Country the user belongs to')
  available     = meta.IntegerField(maxlength = 3, default = 100,
                    verbose_name = 'available (%)',
                    help_text = 'Percentage of hours per week')
  cost          = meta.IntegerField(maxlength = 4, default = 500,
                    help_text = 'SEK per hour')
  employee      = meta.PositiveSmallIntegerField(unique = True,
                    help_text = 'Employee number')
  notes         = meta.TextField(blank = True)

  def __repr__(self):
    return "%s" % self.username

  class META:
    replaces_module = 'auth.users'

Then I created a model using the auth.User in a ManyToManyField:

class SubProject(meta.Model):
  project    = meta.ForeignKey(Project)
  subproject = meta.CharField(maxlength = 12, help_text = 'Short name')
  name       = meta.CharField(maxlength = 40, help_text = 'Full name')
  manager    = meta.ForeignKey(auth.User, verbose_name = 'manager',
                 limit_choices_to = { 'primary_group__id__exact' : '3'
},
                 help_text = 'Subproject manager')
  state      = meta.ForeignKey(ProjectState, default = 'Open',
                 verbose_name = 'state')
  type       = meta.ForeignKey(SubProjectType, verbose_name = 'type')
  members    = meta.ManyToManyField(auth.User,
                 verbose_name = 'members', related_name = 'username',
                 filter_interface = meta.HORIZONTAL)

  def __repr__(self):
    return "%s" % self.subproject

The admin seems to work fine for both objects.
However, when I play with the objects it looks really strange:

Python 2.3.4 (#1, Feb  7 2005, 15:50:45)
[GCC 3.3.4 (pre 3.3.5 20040809)] on linux2
>>> from django.models.ttime import *
>>> auth.users.get_list()
[admin, anders, fredrik, jocke, madde, martin, mattias, nils, pia,
stava, uffe]
>>> for sp in subprojects.get_list(id__in = [1,2,3]):
...   sp.get_user_list()
...
[2005-10-27 00:00:00, 2005-10-27 00:00:00, 2005-10-27 00:00:00]
[2005-10-27 00:00:00, 2005-10-27 00:00:00, 2005-10-27 00:00:00,
2005-10-27 00:00:00, 2005-10-27 00:00:00, 2005-10-27 00:00:00]
[2005-10-27 00:00:00, 2005-10-27 00:00:00, 2005-10-27 00:00:00]

A "mysql> select * from auth_users;" reveals that it's either the
date_joined, or last_login field that is displayed.

What gives? Anyone seen this strange behaviour?

/LarS

Reply via email to