2017-09-12 6 views
0

問題は何ですか?私はグーグルで、私が持っているものに近いものは見つけていません。プロファイルを保存してから次のページに進むと、エラーが発生します。Django models.DateTimeField django.db.utils.IntegrityError:NOT NULL制約が失敗しました

私は開発サーバーでsqliteを使用して作業しています。

ありがとうございます。

models.py

class SchoolProfile(models.Model): 
    create_date = models.DateTimeField(
     null=False, blank=False, **auto_now_add=True,** 
     verbose_name=u'Fecha de creación') 
    modification_date = models.DateTimeField(
     null=False, blank=False, **auto_now=True,** 
     verbose_name=u'Fecha de última modificación') 
    cycle = models.CharField(
     null=False, blank=False, max_length=9, 
     verbose_name='Ciclo escolar') 
    name = models.CharField(
     null=False, blank=False, max_length=100, 
     verbose_name='Nombre de la escuela') 

    def __unicode__(self): 
     return '{} {}'.format(self.cycle, self.name) 

    class Meta: 
     db_table = 'Perfil Escolar' 
     ordering = ['id', 'name'] 
     verbose_name = 'Perfil Escolar' 
     verbose_name_plural = 'Perfiles Escolares' 

    class Admin: 
     pass 


class SchoolServices(models.Model): 

    school_profile = models.ForeignKey(
     SchoolProfile, 
     on_delete=models.CASCADE) 
    tipo = models.IntegerField(
     choices=SCHOOL_TYPE_CHOICES, default=SCHOOL_TYPE_KINDER, 
     verbose_name='Tipo de Escuela') 
    folio = models.CharField(
     null=True, blank=True, max_length=40, 
     verbose_name='Folio') 

    def __unicode__(self): 
     return '{} [{}]'.format(self.tipo, self.folio) 

    class Meta: 
     db_table = 'Servicio Escolar' 
     ordering = ['tipo', 'folio'] 
     verbose_name = 'Servicio Escolar' 
     verbose_name_plural = 'Servicios Escolares' 

    class Admin: 
     pass 

forms.py

class SchoolProfileForm(ModelForm): 
    class Meta: 
     model = SchoolProfile 
     readonly_fields = (
      'create_date', 
      'modification_date',) 
     fields = (
      'cycle', 
      'name',) 


class SchoolServicesForm(ModelForm): 
    class Meta: 
     model = SchoolServices 
     fields = (
      'tipo', 
      'folio',) 

views.py

class SchoolProfileView(LoginRequiredMixin, CreateView): 
    model = SchoolProfile 
    form_class = SchoolProfileForm 
    context_object_name = 'school' 
    template_name = 'profile/school_profile.html' 

    def get_success_url(self, **kwargs): 
     return reverse(
      'profile_edit', 
      kwargs={'pk': self.object.id}) 

urls.py

urlpatterns = [ 
    url(r'^create$', 
     views.SchoolProfileView.as_view(), 
     name='profile_create'), ] 

私が作成したフォームを埋めることができます「管理者」のインターフェースを使用して、私は、私は次のエラーを取得する「保存」提出後:

Internal Server Error: /admin/profile/schoolprofile/add/ 
Traceback (most recent call last): 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute 
return self.cursor.execute(sql, params) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute 
return Database.Cursor.execute(self, query, params) 
sqlite3.IntegrityError: NOT NULL constraint failed: Perfil 
Escolar.create_date 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/core/handlers/exception.py", line 41, in inner 
response = get_response(request) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/core/handlers/base.py", line 185, in _get_response 
response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 551, in wrapper 
return self.admin_site.admin_view(view)(*args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 149, in _wrapped_view 
response = view_func(request, *args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func 
response = view_func(request, *args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/sites.py", line 224, in inner 
return view(request, *args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 1508, in add_view 
return self.changeform_view(request, None, form_url, extra_context) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 67, in _wrapper 
return bound_func(*args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 149, in _wrapped_view 
response = view_func(request, *args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 63, in bound_func 
return func.__get__(self, type(self))(*args2, **kwargs2) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 1408, in changeform_view 
return self._changeform_view(request, object_id, form_url, extra_context) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 1448, in _changeform_view 
self.save_model(request, new_object, form, not add) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 979, in save_model 
obj.save() 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 807, in save 
force_update=force_update, update_fields=update_fields) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 837, in save_base 
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 923, in _save_table 
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 962, in _do_insert 
using=using, raw=raw) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/manager.py", line 85, in manager_method 
return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/query.py", line 1076, in _insert 
return query.get_compiler(using=using).execute_sql(return_id) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1107, in execute_sql 
cursor.execute(sql, params) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 80, in execute 
return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute 
return self.cursor.execute(sql, params) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/utils.py", line 94, in __exit__ 
six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise 
raise value.with_traceback(tb) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute 
return self.cursor.execute(sql, params) 
    File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute 
return Database.Cursor.execute(self, query, params) 
django.db.utils.IntegrityError: NOT NULL constraint failed: Perfil Escolar.create_date 

答えて

0

(CREATE_DATE)あなたの日付時刻が提出されたようだと、nullではありません、私はないと思います日付提出された値を割り当て、2つのハンドルこのエラーがある

If the datetime field required,you can do like

class SchoolProfile(models.Model): 
     create_date = models.DateTimeField(
        null=False, blank=False, 
        verbose_name=u'Fecha de creación',auto_now_add=True) 

その現在の日付時刻、ローカルのタイムゾーンを受け取り、挿入新しいレコードとき、私は提出CREATE_DATEに余分なキーワードを追加してい

If datetime filed not required

class SchoolProfile(models.Model): 
     create_date = models.DateTimeField(
        null=True, blank=True, 
        verbose_name=u'Fecha de creación') 
+0

ありがとうございました!完全性のために、フィールドは提案に従って更新されました。 'create_date'と 'modification_date'のコードを参照してください。 – Francisco

+0

create_dateと同じことができます。 – Robert

0

NOT NULLフィールドに値を指定しなかったため、このエラーが発生しました。あなたの場合、NOT NULLフィールドは 'created_date'と 'modification_date'です

auto_now-add = Trueを使用すると、オブジェクトが作成されたときにのみフィールドの現在のシステム時間を自動的に取得できます。オブジェクト作成時にのみ更新されるため、created_dateを使用することができます。

modification_dateの場合、オブジェクトに対して行われたすべての変更で更新する必要があります。このため、 'auto_now = True'を使用できます。

それは次のようになります。

class SchoolProfile(models.Model): 
      created_date = models.DateTimeField(null=False, blank=False, auto_now_add=True, verbose_name='Fecha de creación') 
      modification_date = models.DateTimeField(
    null=False, blank=False, auto_now=True, 
    verbose_name=u'Fecha de última modificación') 
      #Remaining code..... 
関連する問題