Я постоянно получаю эту ошибку, когда пытаюсь открыть эту базу данных через django admin
Тип исключения: OperationalError в / admin / tasks / task / Значение исключения: нет такого столбца: tasks_task.task_name_id
Изначально я сильно изменил поля в моделях, в которых уже были сохранены некоторые объекты. Теперь я не мог вернуться, поэтому я запустил новое приложение и скопировал все файлы из старого приложения, как они были в том же проекте. удалил старое приложение и переименовал новое приложение по имени старого, чтобы в проекте, где бы он ни находился, не было никаких проблем.
но теперь всякий раз, когда я пытаюсь выполнить миграцию, я получаю эту ошибку:
File "C:\Users\sarda\anaconda3\envs\myDjangoEnv\lib\site-packages\django\db\backends\sqlite3\base.py", line 326, in check_constraints
raise utils.IntegrityError(
django.db.utils.IntegrityError: The row in table 'tasks_task' with primary key '1' has an invalid foreign key: tasks_task.task_name_id cont
ains a value 'task_name_id' that does not have a corresponding value in tasks_task_list.id.
models.py:
from django.db import models
import datetime
from django.utils import timezone
class Task_List(models.Model):
task_name=models.CharField(max_length=100)
c1=models.CharField(max_length=30, default="OTHER")
c2=models.CharField(max_length=30, default="OTHER")
c3=models.CharField(max_length=30, default="OTHER")
time_esc=models.IntegerField(default=1)
def __str__(self):
return self.task_name
class Task_manager(models.Manager):
def create_Task(self, title,deadline):
Task1 = self.create(title=title,deadline=deadline)
# do something with the book
return Task1
class Task(models.Model):
STATUS = (
('ONGOING', 'ONGOING'),
('COMPLETED','COMPLETED'),
('PENDING','PENDING' ),
('FINISHED','FINISHED')
)
task_name=models.ForeignKey(Task_List, on_delete=models.SET_NULL, null=True)
title=models.CharField(max_length=30,default="Other", blank=True)
created=models.DateTimeField(auto_now_add=True)
deadline_fixed=models.DateTimeField(default=timezone.now())
deadline=models.DateTimeField(default=timezone.now())
score=models.IntegerField(default=0)
score_fixed=models.IntegerField(default=0, editable=False)
status=models.CharField(max_length=15,default="ONGOING",choices=STATUS)
stage=models.CharField(max_length=15, default='NORMAL')
objects=Task_manager()
class Meta:
ordering = [ '-created']
def __str__(self):
return self.title
admin.py:
from django.contrib import admin
from django.utils.translation import ugettext_lazy
# Register your models here.
from .models import *
from django.shortcuts import render, redirect
from .forms import *
from searchableselect.widgets import SearchableSelect
def mark_completed(modeladmin, request, queryset):
refresh(modeladmin,request,queryset)
tasks=Task.objects.all()
form=TaskForm()
for task in tasks:
if task.status=='ONGOING' and timezone.now()<task.deadline:
queryset.update(status='COMPLETED')
elif task.status=="PENDING":
queryset.update(status='FINISHED')
#row_completed=queryset.update(status='FINISHED')
'''message_bit = "%s stories were" % row_completed
self.message_user(request, "%s successfully marked as published." % message_bit)'''
mark_completed.short_description = "Mark COMPLETED"
def refresh(modeladmin, request, queryset):
tasks=Task.objects.all()
form=TaskForm()
for task in tasks:
if task.status=="ONGOING" and task.deadline<timezone.now():
queryset.update(status='PENDING')
refresh.short_description = "Refresh"
class TaskAdmin(admin.ModelAdmin):
'''def film_status(self, obj):
if obj.status == 'FINISHED':
return '<div style="width:100%%; height:100%%; background-color:Green;">%s</div>' % obj.status()
return obj.status()
film_status.allow_tags = True'''
form=TaskForm
list_display=('task_name','title','status','deadline')
list_filter=('status',)
search_fields=('title',)
date_hierarchy='created'
actions=[refresh,mark_completed]
radio_fields={'status': admin.HORIZONTAL}
list_editable=['status',]
#raw_id_fields=('c2',)
#auto_complete=['title']
'''fieldsets=[
['Basic', {
'fields': ['comment','status']}],
['Advanced', {
'classes': ['collapse'],
'fields': [('created','deadline_fixed'),('c1', 'c2','c3'),('score_fixed','score')],
}],]'''
readonly_fields = ['score','score_fixed','deadline_fixed','created']
def change_view(self,request,object_id,extra_content=None):
return super(TaskAdmin,self).change_view(request,object_id)
admin.site.register(Task,TaskAdmin)