DBにデータを挿入しようとしましたが、以下のエラーが発生しました。djangoの形式でデータを送信中にエラーが発生しました
enter code here
model.py
from django.db import models
# Create your models here.
class Profile(models.Model):
name = models.CharField(max_length=50, primary_key=True)
assign = models.CharField(max_length=50)
doj = models.DateField()
class Meta:
db_table= 'profile'
def __unicode__(self):
return u'%s' % (self.name)
class working(models.Model):
w_name =models.ForeignKey(Profile, db_column='w_name')
monday = models.IntegerField(null=True, db_column='monday', blank=True)
tuesday = models.IntegerField(null=True, db_column='tuesday', blank=True)
wednesday = models.IntegerField(null=True, db_column='wednesday', blank=True)
class Meta:
db_table = 'working'
def __unicode__(self):
return u'%s ' % (self.w_name)
forms.py
from models import *
from django import forms
class WorkingForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(WorkingForm, self).__init__(*args, **kwargs)
self.fields['w_name'] =forms.CharField(initial='x',widget=forms.HiddenInput())
class Meta:
model = working
exclude = ('id')
view.py
# Create your views here.
from forms import *
from django import http
from django.shortcuts import render_to_response, get_object_or_404
def index(request):
if request.method == "POST":
form = WorkingForm(request.POST)
if form.is_valid():
form.save()
return http.HttpResponse('Added')
else:
form = WorkingForm()
return render_to_response('add_workingdays.html',locals())
Error Message:
ValueError at/
Cannot assign "u'x'": "working.w_name" must be a "Profile" instance.
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 1.2.4
Exception Type: ValueError
Exception Value:
Cannot assign "u'x'": "working.w_name" must be a "Profile" instance.
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 1.2.4
Python Version: 2.6.5
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'check']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/core/handlers/base.py" in get_response
100. response = callback(request, *callback_args, **callback_kwargs)
File "/home/xyz/newapp/../newapp/check/views.py" in index
10. if form.is_valid():
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/forms/forms.py" in is_valid
121. return self.is_bound and not bool(self.errors)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/forms/forms.py" in _get_errors
112. self.full_clean()
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/forms/forms.py" in full_clean
269. self._post_clean()
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/forms/models.py" in _post_clean
320. self.instance = construct_instance(self, self.instance, opts.fields, opts.exclude)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/forms/models.py" in construct_instance
51. f.save_form_data(instance, cleaned_data[f.name])
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/fields/__init__.py" in save_form_data
416. setattr(instance, self.name, data)
File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/fields/related.py" in __set__
318. self.field.name, self.field.rel.to._meta.object_name))
Exception Type: ValueError at/
Exception Value: Cannot assign "u'x'": "working.w_name" must be a "Profile" instance.
私は2つのテーブル間の外部キー関係を行なったし、私はそれが「u'x '」を割り当てることができません取得作業テーブルにデータを挿入しようとしています: 『working.w_nameは』 『プロフィール』のインスタンスである必要があります。
私が削除した場合
def __init__(self, *args, **kwargs):
super(WorkingForm, self).__init__(*args, **kwargs)
self.fields['w_name'] =forms.CharField(initial='x',widget=forms.HiddenInput())
それが正常に動作しますが、私は隠されたとして、ユーザー名を入力したいが、それは、外部キーエラーを投げ
EDIT:
はまたForiegnkey issue while submitting the formを参照してください。同じエラーを投げる問題のために。
ここでの名前は、PK名= models.CharField(max_length = 50、primary_key = True)で、w_name作業表に名前を保存します。 – sush
うーん、よかった。それを助ける方法を知らないが、これは興味深いと思う! –
例外タイプ:ValueError at/ 例外値: "u'x '"を割り当てることはできません: "working.w_name"は "Profile"インスタンスでなければなりません。 – sush