2015-11-27 3 views
0

Я получаю странную ошибку, и я не могу найти решение. Представление используется для создания записей данных для пользователя, но с возможностью возврата и редактирования, поэтому единственное представление для обработки обновления ...Возможная ошибка с формами и массивами? Несколько форм на одном представлении и поля массива в моделях ---: Django и Postgres

Код работает только с одной формой, с несколькими, то это дает бессмысленную ошибку.

Это все в одном приложении со своим собственным набором urls.py

Я вошел в необработанных данных на данный момент в поле формы оказанной так например, интересы: [1,2,3,4,5 ] в этих областях это работало как его следует без каких-либо ошибок или отклонений (данные обновляются в поле), но когда я добавил навыки через инкрементное развитие он показывает эта ошибка:

отсутствует «]» в размерности массива ЛИНИЯ 1: ... akeProfile_skills "SET" user_id "= 11," skills "= '[0,1,2,3, ..

Я использую:postgres1.9 Python3.4 Джанго 1.8.7

Код:

view.py

@login_required 
def step2(request): 

    title =" Step 2 of 4 " 
    # if request.method.upper() == 'POST': 
    #  print('hello free stackoverflow points') 

    #user_answer = UserAnswer.objects.get(user=request.user, question =instance) 
    #profile, created = Profile.objects.get_or_create(user=request.user) 
    form2p0 = step2p0Form() 
    form2p1 = step2p1Form() 
    form2p2 = step2p2Form() 


    context ={ 
     "title":title, 
     "form2p0":form2p0, 
     "form2p1":form2p1, 
     "form2p2":form2p2, 

    } 
    #skills, created = Skills.objects.get_or_create(user=request.user) 
    if request.method.upper() == 'POST': 

     interests, created = Interests.objects.get_or_create(user=request.user) 
     skills, created = Skills.objects.get_or_create(user=request.user) 
     languages, created = Languages.objects.get_or_create(user=request.user) 

     form2p0 = step2p0Form(request.POST or None, instance= interests) 
     form2p1 = step2p1Form(request.POST or None, instance= skills) 
     form2p2 = step2p2Form(request.POST or None, instance= languages) 

     context ={ 
      "title":title, 
      "form2p0":form2p0, 
      "form2p1":form2p1, 
      "form2p2":form2p2, 

     } 

     if form2p0.is_valid() and form2p1.is_valid() and form2p2.is_valid(): 

      instance2p0 =form2p0.save(commit=False) 
      instance2p1 =form2p1.save(commit=False) 
      instance2p2 =form2p2.save(commit=False) 

      interests = form2p0.cleaned_data.get('interests') 
      instance2p0.user = request.user 
      instance2p0.interest = interests 

      skills= form2p1.cleaned_data.get('skills') 
      instance2p1.user = request.user 
      instance2p1.skills = skills 

      languages = form2p2.cleaned_data.get('languages') 
      instance2p2.languages = languages 

      instance2p0.save() 
      instance2p1.save() 
      instance2p2.save() 


      return HttpResponseRedirect(reverse('makeProfile:step3')) 

    return render(request, "profile/step2.html", context) 

form.py

class step2p0Form(forms.ModelForm): 
    class Meta: 
     model =Interests 
     fields = ['interests'] 

    interests = forms.CharField(required = True) 

class step2p1Form(forms.ModelForm): 
    class Meta: 
     model =Skills 
     fields = ['skills'] 

    skills = forms.CharField(required = True) 

class step2p2Form(forms.ModelForm): 
    class Meta: 
     model = Languages 
     fields =['languages'] 

    languages = forms.CharField() 

model.py

class Skills(models.Model): 

user = models.OneToOneField(User,primary_key=True) 
#skills = models.CharField(max_length = 128, null=True, blank=True) 
skills = ArrayField(models.IntegerField(null=True, blank=True, default = -1)) 


class Interests(models.Model): 

user = models.OneToOneField(User,primary_key=True) 
#interests = models.CharField(max_length = 128, null=True, blank=True) 
interests = ArrayField(models.IntegerField(null=True, blank=True, default = -1)) 




class Languages(models.Model): 

user = models.OneToOneField(User,primary_key=True) 

languages = ArrayField(models.CharField(max_length=50,blank=True,default="None")) 



#*******************SIGNALS*********************** 


@receiver(post_save, sender=settings.AUTH_USER_MODEL) 
def create_profile_handler(sender, instance, created, **kwargs): 

if not created: 
    print("hello#########") 
    return 

profile = Profile(user=instance) 
interests = Interests(user=instance) 
skills= Skills(user=instance) 
languages = Languages(user=instance) 

interests.interests = [0] 
skills.skills = [0] 
languages.languages = ["None"] 

skills.save() 
interests.save() 
languages.save() 
profile.save() 



DataError at /makeProfile/step2/ 
missing "]" in array dimensions 
LINE 1: ...akeProfile_skills" SET "user_id" = 11, "skills" = '[0,1,2,3,... 
                 ^
Request Method: POST 
Request URL: http://127.0.0.1:8888/makeProfile/step2/ 
Django Version: 1.8.7 
Exception Type: DataError 
Exception Value:  
missing "]" in array dimensions 
LINE 1: ...akeProfile_skills" SET "user_id" = 11, "skills" = '[0,1,2,3,... 
                 ^
Exception Location: /home/g4/django/pureRu/lib/python3.4/site-p ackages/django/db/backends/utils.py in execute, line 64 
Python Executable: /home/g4/django/pureRu/bin/python 
Python Version: 3.4.3 
Python Path:  
['/home/g4/django/pureRu/src', 
'/home/g4/django/pureRu/lib/python3.4', 
'/home/g4/django/pureRu/lib/python3.4/plat-x86_64-linux-gnu', 
'/home/g4/django/pureRu/lib/python3.4/lib-dynload', 
'/usr/lib/python3.4', 
'/usr/lib/python3.4/plat-x86_64-linux-gnu', 
'/home/g4/django/pureRu/lib/python3.4/site-packages'] 
Server time: Fri, 27 Nov 2015 18:42:54 +0000 

TrackBack:

Environment: 


Request Method: POST 
Request URL: http://127.0.0.1:8888/makeProfile/step2/ 

Django Version: 1.8.7 
Python Version: 3.4.3 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.admin', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'crispy_forms', 
'registration', 
'newsletter', 
'questions', 
'makeProfile') 
Installed Middleware: 
('django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'django.middleware.security.SecurityMiddleware') 

Traceback:

File "/home/g4/django/pureRu/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response 
     132.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/contrib/auth/decorators.py" in _wrapped_view 
     22.     return view_func(request, *args, **kwargs) 
    File "/home/g4/django/pureRu/src/makeProfile/views.py" in step2 
     111.    instance2p1.save() 
    File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/models/base.py" in save 
     734.      force_update=force_update, update_fields=update_fields) 
    File "/home/g4/django/pureRu/lib/python3.4/site-packages/django/db/models/base.py" in save_base 
     762.    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 
    File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/models/base.py" in _save_table 
     827.          forced_update) 
     File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/models/base.py" in _do_update 
     877.   return filtered._update(values) > 0 
     File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/models/query.py" in _update 
     580.   return query.get_compiler(self.db).execute_sql(CURSOR) 
File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/models/sql/compiler.py" in execute_sql 
     1062.   cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) 
     File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/models/sql/compiler.py" in execute_sql 
    840.    cursor.execute(sql, params) 
File "/home/g4/django/pureRu/lib/python3.4/site-packages/django/db/backends/utils.py" in execute 
     79.    return super(CursorDebugWrapper, self).execute(sql, params) 
     File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/backends/utils.py" in execute 
     64.     return self.cursor.execute(sql, params) 
     File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/utils.py" in __exit__ 
     98.     six.reraise(dj_exc_type, dj_exc_value, traceback) 
     File "/home/g4/django/pureRu/lib/python3.4/site-packages/django/utils/six.py" in reraise 
     685.    raise value.with_traceback(tb) 
     File "/home/g4/django/pureRu/lib/python3.4/site- packages/django/db/backends/utils.py" in execute 
     64.     return self.cursor.execute(sql, params) 

    Exception Type: DataError at /makeProfile/step2/ 
    Exception Value: missing "]" in array dimensions 
    LINE 1: ...akeProfile_skills" SET "user_id" = 11, "skills" = '[0,1,2,3,.. 
.^ 

Я надеюсь, его не опечатка, если вы читаете все это, но у меня было два глаза на этот код и проверили его в миллион раз. ... На этом этапе я просто надеюсь, что кто-то там может помочь.

Спасибо

+0

Что ArrayField? Откуда он? Что такое код? –

+0

Поле массива в моделях, которые сопоставляются с массивом типов в Postgres db – red8alice

+0

'postgres1.9'? Интересно. :) –

ответ

0

SO .......... Не уверен, что если это исправить, но его работа, все, что я изменил был порядок внутри вещей: Сгруппированное это так, то магией .. . может быть опечатка айн выше код, но он теперь работает, следовательно, я буду с порядком form2p0.save (фиксации = False) и instance2p0.save()

следовательно:

instance2p0 = form2p0.save(commit = False) 
    interestsEdit = form2p1.cleaned_data.get('interests') 
    instance2p0.Interests = interestsEdit 
    instance2p0.save() 


    instance2p0 = form2p0.save(commit = False) 
    skillsEdit = form2p1.cleaned_data.get('skills') 
    instance2p0.Skills = skillsEdit 
    instance2p0.save() 

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

  • Нет связанных вопросов^_^