唐´;不要创建重复的对象。django,python

唐´;不要创建重复的对象。django,python,python,django,command,Python,Django,Command,我创建了一个脚本,以避免创建重复的对象,但当我运行命令3次时,它仍然创建了相同的对象。它一次又一次地创建了3次对象。我希望你能帮助我,知道我的代码有什么问题 from django.core.management.base import BaseCommand from jobs.models import Job import json from datetime import datetime import dateparser class Command(BaseCommand):

我创建了一个脚本,以避免创建重复的对象,但当我运行命令3次时,它仍然创建了相同的对象。它一次又一次地创建了3次对象。我希望你能帮助我,知道我的代码有什么问题

from django.core.management.base import BaseCommand
from jobs.models import Job
import json
from datetime import datetime
import dateparser


class Command(BaseCommand):
    help = 'Set up the database'

    def handle(self, *args: str, **options: str):
        with open('static/newdata.json', 'r') as handle:
            big_json = json.loads(handle.read())
            for item in big_json:
                if len(item['description']) == 0:
                    print('Not created. Description empty')
                    continue

                dt = dateparser.parse(item['publication_date'])

                existing_job = Job.objects.filter(

                    job_title = item['job_title'],
                    company = item['company'],
                    company_url = item['company_url'],
                    description = item['description'],
                    publication_date = dt,
                    salary = item['salary'],
                    city = item['city'],
                    district = item['district'],
                    job_url = item['job_url'],
                    job_type = item['job_type'],

                )
                if existing_job.exists() is True:
                    print('This Job already exist')
                else:
                    Job.objects.create(

                        job_title = item['job_title'],
                        company = item['company'],
                        company_url = item['company_url'],
                        description = item['description'],
                        publication_date = dt,
                        salary = item['salary'],
                        city = item['city'],
                        district = item['district'],
                        job_url = item['job_url'],
                        job_type = item['job_type'],

                )

                self.stdout.write(self.style.SUCCESS('added jobs!'))

您是否尝试过使用内置字段验证
unique=True

您是否尝试过使用内置字段验证
unique=True
? 试试看

if existing_job.exists():
而不是

if existing_job.exists() is True:
因为.exists()返回布尔值本身

try

if existing_job.exists():
而不是

if existing_job.exists() is True:

因为.exists()返回布尔值本身

您是否尝试过在没有发布日期字段的情况下同时使用
unique\u

#models.py
班级作业(models.Model):
#你的领域在这里。。。
类元:
唯一_在一起=[[
“职务”,
“公司”,
“公司地址”,
“说明”,
"工资",,
"城市",,
"地区",,
“作业url”,
“工作类型”
]]

您是否尝试过在没有发布日期字段的情况下同时使用
unique\u

#models.py
班级作业(models.Model):
#你的领域在这里。。。
类元:
唯一_在一起=[[
“职务”,
“公司”,
“公司地址”,
“说明”,
"工资",,
"城市",,
"地区",,
“作业url”,
“工作类型”
]]
问题就在这里。我正在以这种格式(“1周前”)删除发布日期,然后我正在更改为日期和时间格式。当我再次运行脚本时,转换的时间是不同的。因此,这就是再次创造就业机会的原因。因为不一样,因为时间创造


问题就在这里。我正在以这种格式(“1周前”)删除发布日期,然后我正在更改为日期和时间格式。当我再次运行脚本时,转换的时间是不同的。因此,这就是再次创造就业机会的原因。因为不一样,因为时间创建不一样,因为所有字段必须相同,以避免重复。2个作业可以具有相同的标题,但在其余的o字段中不同MM否,因为所有字段必须相同,以避免重复。两份工作可以有相同的头衔,但在其他领域可能有所不同。但我得到了和你一样的结果,你很难过它在创造物体。所以你的问题应该在if声明和现有的工作中。关注这些。您可以在这些行上设置点并调试它们。但我得到了和你一样的结果,你很难过它在创造物体。所以你的问题应该在if声明和现有的工作中。关注这些。您可以在这些行上设置点并调试它们是的,我得到了相同的结果。这些值是否可能以不明显的方式不同?不同的大小写字母,可能不同的间距?不,它们是一样的。因为我从JSON数据中运行了3次代码。所以我认为您可以从JSON文件中获得每行的3个“版本”?我不太理解您的意思。问题是,当我运行命令时,它会在这些字段中创建作业。如果我再跑。它不应该创建任何作业,因为同一个JSON文件具有相同的数据。是的,我得到了相同的结果。值是否可能以不明显的方式不同?不同的大小写字母,可能不同的间距?不,它们是一样的。因为我从JSON数据中运行了3次代码。所以我认为您可以从JSON文件中获得每行的3个“版本”?我不太理解您的意思。问题是,当我运行命令时,它会在这些字段中创建作业。如果我再跑。它不应该创建任何作业,因为它是具有相同数据的相同JSON文件。