Django错误:UNIQUE约束失败:scraping_vacancy.title-如何修复



问题!我的脚本工作过一次,然后产生了这样的错误

IntegrityError at /index/
UNIQUE constraint failed: scraping_vacancy.title
Request Method: GET
Request URL:    http://127.0.0.1:8000/index/
Django Version: 3.0.5
Exception Type: IntegrityError
Exception Value:    
UNIQUE constraint failed: scraping_vacancy.title
Exception Location: /Users/dmitrigornakov/Documents/Django/parser/venv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py in execute, line 396
Python Executable:  /Users/dmitrigornakov/Documents/Django/parser/venv/bin/python
Python Version: 3.8.2

代码源:https://github.com/visualGravitySense/parser

views.py文件中的代码:

from django.shortcuts import render
from scraping.utils import *
from scraping.models import *
def home(request):
jobs = djinni()
city = City.objects.get(name='Kyiv')
speciality = Speciality.objects.get(name='Python')
v = Vacancy.objects.filter(city=city, speciality=speciality).values('url')
url_list = [i['url'] for i in v]
for job in jobs:
if job['href'] not in url_list:
vacancy = Vacancy(city=city, speciality=speciality, url=job['href'], title=job['title'], description=job['descript'], company=job['company'])
vacancy.save()
return render(request, 'base.html', {'jobs': jobs})

如果不需要标题的唯一约束,请在抓取文件夹中的models.py中删除它:

class Vacancy(models.Model):
url = models.CharField(max_length=250, unique=True,  verbose_name='Адрес вакансии')
title = models.CharField(max_length=250,  verbose_name='Заголовок вакансии')
description = models.TextField(blank=True, verbose_name='Описание вакансии')
company = models.TextField(max_length=250, blank=True, verbose_name='Название компании')
city = models.ForeignKey(City, verbose_name='Город', on_delete=models.CASCADE)
speciality = models.ForeignKey(Speciality, verbose_name='Специальность', on_delete=models.CASCADE)
timestamp = models.DateField(auto_now_add=True)

更改后,不要忘记执行python manage.py makemigrations

并且在python manage.py migrate scraping 00XX之后(其中00XX是make migrations提供的迁移次数(

最新更新