sqlite3整合性エラー - データ型の不一致が表示されています。しかし、 python manage.py migrate
とpython manage.py makemigrations
が正常に動作します。私のフォームデータは有効です。ビューでevent.save
を使用してデータをデータベースに保存しようとすると、このエラーが発生します。event.save()がDjangoでエラーを返す
私のモデルは次のとおりです。
:
class createEvent(models.Model):
FirstName = models.CharField(max_length=150)
LastName = models.CharField(max_length=150)
EventName = models.CharField(max_length=150)
EventOrganizer = models.CharField(max_length=150)
Location = models.CharField(max_length=200)
Date = models.DateField()
LastDateOfRegistration = models.DateField()
EventDetails = models.TextField()
私のviews.pyは
def create_event(request):
title = "Drizzlelore"
subtitle = "Create event"
if request.method == "POST":
form = createEventForm.createEventForm(request.POST)
print(form.errors)
if form.is_valid():
fname = form.cleaned_data.get('FirstName')
lname = form.cleaned_data.get('LastName')
eventName = form.cleaned_data.get('EventName')
eventOrganizer = form.cleaned_data.get('EventOrganizer')
location = form.cleaned_data.get('Location')
date = form.cleaned_data.get('Date')
lastDateofReg = form.cleaned_data.get('LastDateOfRegistration')
eventDetails = form.cleaned_data.get('EventDetails')
event = form.save(commit=False)
event.save()
context = {
"title":title,
"subtitle":subtitle,
"form" : form,
}
return HttpResponse("Success form submitted")
else:
print("Form not valid")
return HttpResponse("Failure")
else:
form = createEventForm.createEventForm()
context = {
"title":title,
"subtitle":subtitle,
"form":form,
}
return render(request,"home/createevents.html",context)
私のフォームは
class createEventForm(forms.ModelForm):
class Meta:
model = createEvent
fields = [
'FirstName',
'LastName',
'EventName',
'EventOrganizer',
'Location',
'Date',
'LastDateOfRegistration',
'EventDetails',
]
EDITですこれは、インタラクティブシェルで実行されたときにモデルに表示されるフィールドです。
>>> createEvent._meta.get_fields()
(<django.db.models.fields.AutoField: id>, <django.db.models.fields.CharField: FirstName>, <django.db.models.fields.CharField: LastName>, <django.db.models.field
s.CharField: EventName>, <django.db.models.fields.CharField: EventOrganizer>, <django.db.models.fields.CharField: Location>, <django.db.models.fields.DateField:
Date>, <django.db.models.fields.DateField: LastDateOfRegistration>, <django.db.models.fields.TextField: EventDetails>)
これは完全なエラー・トレースです:あなたは、フォームデータが既にrequest.POSTを通過しているので
event = form.save(commit=False)
event.save()
を記述する必要はいけない
Internal Server Error: /drizzlelore/createEvents
Traceback (most recent call last):
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\backe
nds\utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\backe
nds\sqlite3\base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: datatype mismatch
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\core\han
dlers\exception.py", line 41, in inner
response = get_response(request)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\core\han
dlers\base.py", line 187, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\eloixir\Desktop\mysite\mysite\home\views.py", line 67, in creat
e_event
event.save()
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\base.py", line 807, in save
force_update=force_update, update_fields=update_fields)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\base.py", line 837, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, upda
te_fields)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\base.py", line 923, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\base.py", line 962, in _do_insert
using=using, raw=raw)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\query.py", line 1076, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\model
s\sql\compiler.py", line 1107, in execute_sql
cursor.execute(sql, params)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\backe
nds\utils.py", line 80, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\backend
File "C:\Users\eloixir\Desktop\mysite\myvenv\lib\site-packages\django\db\backe
nds\sqlite3\base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: datatype mismatch
Djangoでは、モデルに主キーがあることが必要です –
しかし、デフォルトではDjangoのモデルにidフィールドが追加されています。それはそれ自身のプライマリキーとして機能しませんか? – Gayathri
SQLiteデータベースにIDフィールドが本当にありますか? –