这是我的模特:
class InvitationCode(models.Model):
code = models.CharField(max_length=6, primary_key=True)
group = models.OneToOneField(Group, on_delete=models.PROTECT)
根据doc,
primary_key = True表示null = False且unique = True。
然而,这不是我所看到的:
>>> from app.models import InvitationCode
>>> c = InvitationCode(group_id=1)
>>> c.save()
>>> c.pk
''
>>> c1 = InvitationCode(group_id=1)
>>> c1.save()
>>> InvitationCode.objects.all()
<QuerySet [<InvitationCode: InvitationCode object ()>]>
答案 0 :(得分:0)
您应该为此字段添加值。所以你应该像这样构建它:
c = InvitationCode(group_id=1, code=1)
这就是你的模型创建方式。它不是 autofield 。
答案 1 :(得分:0)
似乎我必须调用full_clean
才能执行验证。正如doc所说 -
请注意,调用时不会自动调用full_clean() 你的模型的save()方法。你需要手动调用它 想要为您自己手动创建的一步模型验证运行 模型。