2013-12-04 1 views
0

Я запускаю Django 1.6 с пользовательской моделью пользователя. Модель пользователя наследует AbstractBaseUser, PermissionsMixin и отлично работает. Это позвольте мне вызвать login() и authenticate(), и когда я делаю syncdb, он создает его без ошибок и позволит мне создать суперпользователя в интерфейсе командной строки.Django Server Killed

Я пытаюсь использовать панель администратора Django. Я могу получить доступ/admin/fine и войти, и он отобразит список зарегистрированных моделей.

Я могу изменить все модели, за исключением «пользователь». Я могу нажать «пользовательскую» модель и посмотреть список пользователей, однако, если я попытаюсь добавить нового пользователя или отредактировать существующего пользователя, запрос займет примерно 1 минуту, а затем веб-сервер django выйдет с сообщением «Killed ».

Я бы опубликовал код, однако я понятия не имею, что будет актуальным, потому что ошибка настолько расплывчата.

Есть ли еще один журнал ошибок где-нибудь, я могу узнать более подробную информацию?

Edit: Пользовательский код модели пользователя:

class User(AbstractBaseUser, PermissionsMixin): 
    id = models.AutoField(primary_key=True) 
    full_name = models.CharField("Full Name", max_length=100) 
    email_address = models.CharField(max_length=255, unique=True, db_index=True) 
    company_name = models.CharField(max_length=50, blank=True, null=True) 
    time_zone = models.CharField(max_length=50, blank=True, null=True) 
    activation_key = models.CharField(unique=True, max_length=50, blank=True, null=True) 
    location = models.ForeignKey(Location, related_name='fk_user_2_country', blank=True, null=True) 
    username = models.CharField(max_length=20, blank=True, null=True, unique=True) 
    is_staff = models.BooleanField(default=False) 

    class Meta: 
     db_table = 'user' 

    USERNAME_FIELD = 'email_address' 
    objects = UserManager() 

    REQUIRED_FIELDS = ['full_name',] 

    def get_full_name(self): 
     return self.email_address 

    def get_short_name(self): 
     return self.email_address 

    def activate_email(self, activation_key): 
     if self.activation_key == activation_key: 
      self.activation_key = None 
      self.save() 
      return True 
     else: 
      return False 

    def __unique__(self): 
     return self.email_address 

    def is_active(self): 
     return self.activation_key is None 
+0

вы можете начать с пользовательской модели пользователя. – vikingosegundo

+0

@vikingosegundo добавила модель пользователя. –

ответ

0

Это было вызвано отношением к таблице "Location" location = models.ForeignKey(Location, related_name='fk_user_2_country', blank=True, null=True).

Эта таблица содержала 3,3 миллиона строк, панель администратора Django пыталась перечислить их все и, как результат, разбилась.

+0

Вы должны попробовать его с помощью 'DEBUG = False'; отлаживая запросы к базе данных кэшей, и это, возможно, исчерпало сервер. –

+0

Спасибо @BurhanKhalid. Как вы думаете, он будет поддерживать 3,3 миллиона строк? Я закончил использование raw_id_fields и использовал поиск вместо перечисления всех строк. Я не думаю, что браузер может обрабатывать 3,3 миллиона строк в раскрывающемся списке. –

Смежные вопросы