为什么我会收到 userId 重复键错误,即使我的模型没有用户作为主键?
Why do I get a userId duplicate key error even though my model does not have user as the primary key?
我有一个继承自预定义 Django 用户模型的交互模型,但我将 messageId 作为主键。
models.py:
class Interaction(models.Model):
messageId = models.TextField(max_length=5000,primary_key=True, unique = True)
user = models.OneToOneField(User, primary_key = False, on_delete=models.CASCADE)
reciever = models.TextField(max_length=5000,blank=True,default='')
sender = models.TextField(max_length=5000,blank=True,default='')
date = models.TextField(max_length=5000,blank=True,default='')
subject = models.TextField(max_length=5000,blank=True,default='')
label = models.TextField(max_length=5000,blank=True,default='')
我有一个名为数据的字典,它存储所需的信息。在views.py
entry, created = Interaction.objects.get_or_create(messageId=data['id'])
entry.user = request.user
entry.sender = data['from']
entry.reciever = data['to']
entry.date = data['date']
entry.subject = data['subject']
entry.label = data['label']
entry.save()
因此,虽然 运行 代码中存在具有相同用户但明显不同消息 ID 的消息
用户不是我的主键,但我一直收到错误
djongo.sql2mongo.SQLDecodeError: FAILED SQL: UPDATE "mainapp_interaction" SET "user_id" = %(0)s, "reciever" = %(1)s, "sender" = %(2)s, "date" = %(3)s, "subject" = %(4)s, "label" = %(5)s WHERE "mainapp_interaction"."messageId" = %(6)s
Pymongo error: {'index': 0, 'code': 11000, 'errmsg': 'E11000 duplicate key error collection: 5d02255b9ccf640b8c608ee1_mysitev6.mainapp_interaction index: user_id_1 dup key: { : 16 }'}
不是主键也没关系。它是 OneToOneField
,因此数据库中每个用户最多只能有一个条目。从逻辑上讲,我认为它应该是 ForeignKey
,您不需要 primary_key=False
标志。
此外,我建议使用 models.DateTimeField()
来存储日期(我不知道你的模型的确切用途,但如果字段是他们所说的,你应该考虑这个)。
祝你好运!
我有一个继承自预定义 Django 用户模型的交互模型,但我将 messageId 作为主键。
models.py:
class Interaction(models.Model):
messageId = models.TextField(max_length=5000,primary_key=True, unique = True)
user = models.OneToOneField(User, primary_key = False, on_delete=models.CASCADE)
reciever = models.TextField(max_length=5000,blank=True,default='')
sender = models.TextField(max_length=5000,blank=True,default='')
date = models.TextField(max_length=5000,blank=True,default='')
subject = models.TextField(max_length=5000,blank=True,default='')
label = models.TextField(max_length=5000,blank=True,default='')
我有一个名为数据的字典,它存储所需的信息。在views.py
entry, created = Interaction.objects.get_or_create(messageId=data['id'])
entry.user = request.user
entry.sender = data['from']
entry.reciever = data['to']
entry.date = data['date']
entry.subject = data['subject']
entry.label = data['label']
entry.save()
因此,虽然 运行 代码中存在具有相同用户但明显不同消息 ID 的消息
用户不是我的主键,但我一直收到错误
djongo.sql2mongo.SQLDecodeError: FAILED SQL: UPDATE "mainapp_interaction" SET "user_id" = %(0)s, "reciever" = %(1)s, "sender" = %(2)s, "date" = %(3)s, "subject" = %(4)s, "label" = %(5)s WHERE "mainapp_interaction"."messageId" = %(6)s
Pymongo error: {'index': 0, 'code': 11000, 'errmsg': 'E11000 duplicate key error collection: 5d02255b9ccf640b8c608ee1_mysitev6.mainapp_interaction index: user_id_1 dup key: { : 16 }'}
不是主键也没关系。它是 OneToOneField
,因此数据库中每个用户最多只能有一个条目。从逻辑上讲,我认为它应该是 ForeignKey
,您不需要 primary_key=False
标志。
此外,我建议使用 models.DateTimeField()
来存储日期(我不知道你的模型的确切用途,但如果字段是他们所说的,你应该考虑这个)。
祝你好运!