Ошибка типа в Django с Python 2.7 - PullRequest
       0

Ошибка типа в Django с Python 2.7

5 голосов
/ 18 сентября 2010

Эй, новичок в Django и мне нужна помощь, когда я добавляю свою модель в интерфейс администратора в Django, она выглядит нормально, но когда я пытаюсь добавить или удалить запись в базе данных, я получаю:

TypeError at /admin/Users/user/add/    
  coercing to Unicode: need string or buffer, tuple found

Я сделал поиск в Google и добавил:

def __str__(self):
    return ""

До конца моего класса модели User, но безуспешно. Не уверены, нужно ли мне что-то вводить в мой admin.py? У меня также нет метода «add» в моем классе User, он также не возвращает ничего, кроме метода, описанного выше.

Спасибо за любую помощь!

Класс пользователя:

class User(models.Model):
GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

username = models.CharField(max_length=30)
email = models.EmailField()
password = models.CharField(max_length=30)

birth_date = models.DateField()
description = models.CharField(max_length=200)
gender = models.CharField(max_length = 1, choices = GENDER_CHOICES, default = "M")
image = models.ImageField(upload_to="media/photos/")
signupIP = models.IPAddressField()
privateOrPublic = models.BooleanField(default=1)

def __str__(self):
    return ""

И простой admin.py в / Users /

 from Users.models import User
 from django.contrib import admin

 admin.site.register(User)

Traceback:

 Environment:

 Request Method: POST
 Request URL: http://127.0.0.1/admin/Users/user/add/
 Django Version: 1.2.3
 Python Version: 2.7.0
 Installed Applications:
 ['django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.sites',
  'django.contrib.messages',
  'django.contrib.admin',
  'Users']
 Installed Middleware:
 ('django.middleware.common.CommonMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware')


 Traceback:
 File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
   100.                     response = callback(request, *callback_args, **callback_kwargs)
 File "C:\Python27\lib\site-packages\django\contrib\admin\options.py" in wrapper
   239.                 return self.admin_site.admin_view(view)(*args, **kwargs)
 File "C:\Python27\lib\site-packages\django\utils\decorators.py" in _wrapped_view
   76.                     response = view_func(request, *args, **kwargs)
 File "C:\Python27\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func
   69.         response = view_func(request, *args, **kwargs)
 File "C:\Python27\lib\site-packages\django\contrib\admin\sites.py" in inner
   190.             return view(request, *args, **kwargs)
 File "C:\Python27\lib\site-packages\django\utils\decorators.py" in _wrapper
   21.             return decorator(bound_func)(*args, **kwargs)
 File "C:\Python27\lib\site-packages\django\utils\decorators.py" in _wrapped_view
   76.                     response = view_func(request, *args, **kwargs)
 File "C:\Python27\lib\site-packages\django\utils\decorators.py" in bound_func
   17.                 return func(self, *args2, **kwargs2)
 File "C:\Python27\lib\site-packages\django\db\transaction.py" in _commit_on_success
   299.                     res = func(*args, **kw)
 File "C:\Python27\lib\site-packages\django\contrib\admin\options.py" in add_view
   795.                 self.save_model(request, new_object, form, change=False)
 File "C:\Python27\lib\site-packages\django\contrib\admin\options.py" in save_model
   597.         obj.save()
 File "C:\Python27\lib\site-packages\django\db\models\base.py" in save
   434.         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
 File "C:\Python27\lib\site-packages\django\db\models\base.py" in save_base
   517.                         for f in meta.local_fields if not isinstance(f, AutoField)]
 File "C:\Python27\lib\site-packages\django\db\models\fields\files.py" in pre_save
   255.             file.save(file.name, file, save=False)
 File "C:\Python27\lib\site-packages\django\db\models\fields\files.py" in save
   91.         name = self.field.generate_filename(self.instance, name)
 File "C:\Python27\lib\site-packages\django\db\models\fields\files.py" in generate_filename
   282.         return os.path.join(self.get_directory_name(), self.get_filename(filename))
 File "C:\Python27\lib\site-packages\django\db\models\fields\files.py" in get_filename
   279.         return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))
 File "C:\Python27\lib\site-packages\django\utils\functional.py" in __getattr__
   276.             self._setup()
 File "C:\Python27\lib\site-packages\django\core\files\storage.py" in _setup
   242.         self._wrapped = get_storage_class()()
 File "C:\Python27\lib\site-packages\django\core\files\storage.py" in __init__
   133.         self.location = os.path.abspath(location)
 File "C:\Python27\lib\ntpath.py" in abspath
   465.                 path = _getfullpathname(path)

 Exception Type: TypeError at /admin/Users/user/add/
 Exception Value: coercing to Unicode: need string or buffer, tuple found

1 Ответ

1 голос
/ 19 сентября 2010

В определении MEDIA_ROOT замените замену так, чтобы она содержала необработанную строку, иначе вы замените буквальную одинарную обратную косую черту вместо двух, которые вы имели в виду.

MEDIA_ROOT = os.path.join(os.path.dirname(file), "media").replace(r"\\", "//")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...