Hello, python manage.py syncdb failed for me, saying: there is no such table auth_group. On closer examination, the error stack mentioned one of my models: timewriting.
After commenting 5 lines of code: tada... syncdb worked! However, I do not understand, and I am interested in: why ? Wim ----- My code (problematic lines are commented): from datetime import datetime, date from django.db import models from django.db.models import Q from django.contrib.auth.models import User, Group from django.conf import settings if hasattr(settings, 'TIMEWRITING_MINUTES_LIST'): MINUTES_LIST = settings.TIMEWRITING_MINUTES_LIST else: MINUTES_LIST = ( (0, '0'), (15, '15'), (30, '30'), (45, '45'), ) HOURS_LIST = [(item, unicode(item)) for item in xrange(0, 24)] PROJECT_TYPE_LIST = ( ('project', 'Project'), ('leave', 'Verlof'), ('illness', 'Ziekte'), ) # TIMEWRITING_GROUP_ID = 5 # TIMEWRITING_GROUP = Group.objects.get(id=TIMEWRITING_GROUP_ID) def format_hours(hours, minutes): return '%d:%02d' % (hours, minutes) def format_minutes(minutes): hours = minutes // 60 minutes = minutes % 60 return format_hours(hours, minutes) # def get_timewriting_users(): # return User.objects.filter(is_active=True, groups__id=TIMEWRITING_GROUP_ID).exclude(username='estrate') class ProjectManager(models.Manager): def visible(self): return self.filter((Q(finished_at__isnull=True)|Q (finished_at__gte=date.today())), is_active=True, started_at__lte=date.today()) def for_user(self, user): return self.visible().filter((Q(allow_all_users=True)|Q (allowed_users=user))) class Project(models.Model): name = models.CharField('naam', max_length=200) short_name = models.CharField('korte naam', max_length=25, unique=True, help_text='Korte, unieke naam om te gebruiken in overzichten.') description = models.TextField('omschrijving', blank=True, help_text='Optioneel') confirm_term = models.PositiveIntegerField('bevestigingstermijn', default=30, help_text='Aantal dagen waarna gebruikers een herinnering krijgen om geschreven uren te bevestigen (0=nooit).') type = models.CharField('type', max_length=25, default='project', choices=PROJECT_TYPE_LIST, help_text='Verlof en ziekte kunnen ook als "projecten" worden ingevoerd zodat de gebruiker hier uren op kan schrijven.') started_at = models.DateField('gestart op', default=date.today, db_index=True, help_text='Vanaf deze dag kan men urenschrijven op dit project. Als de startdatum later wordt verlegd zullen reeds geschreven uren NIET worden gewist.') finished_at = models.DateField(u'be\xebindigd op', null=True, blank=True, db_index=True, help_text='Tot en met deze dag kan men urenschrijven op dit project. Als de begindatum later wordt verlegd zullen reeds geschreven uren NIET worden gewist. Laat dit veld leeg als er geen einddatum bekend is of indien niet van toepassing.') is_active = models.BooleanField('is geactiveerd', default=True, db_index=True, help_text='Met dit veld kan een project (tijdelijk) worden afgesloten voor het schrijven van nieuwe uren, ongeacht de start- en einddatum.') allow_all_users = models.BooleanField('open voor alle gebruikers', default=True, db_index=True, help_text='Vink dit aan indien alle gebruikers die uren mogen schrijven, op dit project uren kunnen schrijven. Indien dit is uitgevinkt dan kunnen alleen de gebruikers urenschrijven die zijn geselecteerd bij "toegestane gebruikers".') allowed_users = models.ManyToManyField(User, verbose_name='toegestane gebruikers', db_index=True, blank=True) objects = ProjectManager() class Meta: verbose_name = 'project' verbose_name_plural = 'projecten' ordering = ('short_name',) def __unicode__(self): return self.short_name class WorkDayManager(models.Manager): def unconfirmed(self): return self.filter(is_confirmed=False) def confirmed(self): return self.filter(is_confirmed=True) class WorkDay(models.Model): date = models.DateField('datum', default=date.today, help_text='De datum van deze werkdag voor de aangegeven gebruiker.', db_index=True) user = models.ForeignKey(User, verbose_name='gebruiker', db_index=True) is_confirmed = models.BooleanField('is bevestigd', default=False, db_index=True) confirmed_at = models.DateTimeField('bevestigd op', null=True, blank=True, editable=False) objects = WorkDayManager() class Meta: verbose_name = 'werkdag' verbose_name_plural = 'werkdagen' ordering = ('-date',) unique_together = (('date', 'user'),) def __unicode__(self): return u'%s %s' % (self.date, self.user) def save(self, *args, **kwargs): if self.is_confirmed and not self.confirmed_at: self.confirmed_at = datetime.now() else: self.confirmed_at = None super(WorkDay, self).save(*args, **kwargs) def total_minutes(self): minutes = 0 for item in self.task_set.visible(): minutes += item.calculated_minutes return minutes def total_formatted_hours(self): return format_minutes(self.total_minutes()) class TaskManager(models.Manager): def visible(self): return self.filter(is_trashed=False) def unconfirmed(self): return self.visible().filter(workday__is_confirmed=False) class Task(models.Model): project = models.ForeignKey(Project, verbose_name='project', db_index=True) workday = models.ForeignKey(WorkDay, verbose_name='werkdag', db_index=True) hours = models.PositiveIntegerField('uren', default=0, choices=HOURS_LIST) minutes = models.PositiveIntegerField('minutes', default=0, choices=MINUTES_LIST) calculated_minutes = models.PositiveIntegerField('calculated minutes', default=0, editable=False) description = models.CharField('omschrijving', max_length=200, blank=True) is_trashed = models.BooleanField('verwijderd', default=False, db_index=True, help_text='Vink dit aan om de taak te verwijderen uit de overzichten en totalen.') created_at = models.DateTimeField('aangemaakt op', default=datetime.now, editable=False) modified_at = models.DateTimeField('aangepast op', default=datetime.now, editable=False) objects = TaskManager() class Meta: verbose_name = 'taak' verbose_name_plural = 'taken' permissions = ( ("view_others_data", "Mag uren van anderen inzien"), ) def __unicode__(self): return u'%s %s' % (self.project, self.workday) def save(self, *args, **kwargs): self.modified_at = datetime.now() self.calculated_minutes = (int(self.hours) * 60) + int (self.minutes) super(Task, self).save(*args, **kwargs) def formatted_hours(self): return format_hours(self.hours, self.minutes) ---- dja...@wim-fujitsu:/var/projects/vmbobouwtechniek/code$ python manage.py syncdb Traceback (most recent call last): File "manage.py", line 18, in <module> execute_manager(settings) File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/ management/__init__.py", line 361, in execute_manager utility.execute() File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/ management/__init__.py", line 306, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/ management/base.py", line 192, in run_from_argv self.execute(*args, **options.__dict__) File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/ management/base.py", line 218, in execute self.validate() File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/ management/base.py", line 246, in validate num_errors = get_validation_errors(s, app) File "/var/projects/vmbobouwtechniek/code/site-packages/django/core/ management/validation.py", line 28, in get_validation_errors for (app_name, error) in get_app_errors().items(): File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/loading.py", line 128, in get_app_errors self._populate() File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/loading.py", line 57, in _populate self.load_app(app_name, True) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/loading.py", line 72, in load_app mod = __import__(app_name, {}, {}, ['models']) File "/var/projects/vmbobouwtechniek/code/site-packages/ vmbobouwtechniek/timewriting/models.py", line 28, in <module> TIMEWRITING_GROUP = Group.objects.get(id=5) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/manager.py", line 117, in get return self.get_query_set().get(*args, **kwargs) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/query.py", line 317, in get num = len(clone) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/query.py", line 173, in __len__ self._result_cache = list(self.iterator()) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/query.py", line 288, in iterator for row in self.query.results_iter(): File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/sql/query.py", line 205, in results_iter for rows in self.execute_sql(MULTI): File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ models/sql/query.py", line 1820, in execute_sql cursor.execute(sql, params) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ backends/util.py", line 19, in execute return self.cursor.execute(sql, params) File "/var/projects/vmbobouwtechniek/code/site-packages/django/db/ backends/sqlite3/base.py", line 170, in execute return Database.Cursor.execute(self, query, params) sqlite3.OperationalError: no such table: auth_group --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---