【问题标题】:Django Database create_or_update errorDjango 数据库 create_or_update 错误
【发布时间】:2018-01-06 16:46:27
【问题描述】:

所以 pcaps 表的定义是:

class Pcaps(models.Model):
    uuid = models.CharField(max_length=50, unique=True)
    filename = models.CharField(max_length=200, default='')
    datetime = models.DateTimeField(default=datetime.now, blank=True)
    filehash = models.ForeignKey(Malwares)
    systemuuid = models.ForeignKey(ClonedSystem)

恶意软件表的定义是:

class Malwares(models.Model):
    name = models.CharField(max_length=100)
    filehash = models.CharField(max_length=100, unique=True)

视图文件中的代码是:

    Pcaps.objects.update_or_create(filename=pcapname, filehash=filehash, systemuuid=uuid)

恶意软件值在以下位置实例化:

    Malwares.objects.update_or_create(name=name, filehash=malwarehash)

我得到的错误是:

以 10 为基数的 int() 的无效文字:'ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa'

(ed01... 是filehash 值)

我在这里犯了什么错误?

【问题讨论】:

    标签: django python-3.x postgresql django-models


    【解决方案1】:

    问题在于您将 filehash 值参数设置为哈希字符串,而 filehashForeignKey 字段,默认为整数。

    您可能打算首先创建Malwares 记录:

    malware = Malwares.objects.create(name="name", filehash=malwarehash)
    Pcaps.objects.update_or_create(filename=pcapname, filehash=malware, systemuuid=uuid)
    

    【讨论】:

    • Malwares.objects.update_or_create(name=name, filehash=malwarehash)
    • 这在代码的其他地方完成,并且数据库被填充
    • @dipl0 好的,然后,获取对“更新或创建”Malwares 实例的引用,并在“更新或创建”Pcaps 时用作filehash 参数的值。希望对您有所帮助。
    • filehashforeignkey = Malwares.objects.get(filehash=filehash) uuid = ClonedSystem.objects.get(uuid=uuid) Pcaps.objects.update_or_create(filename=pcapname, filehash=filehashforeignkey, systemuuid=uuid)
    猜你喜欢
    • 1970-01-01
    • 2013-04-26
    • 2019-01-17
    • 2015-10-12
    • 2018-10-21
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多