这是我的模型:
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 ()>]>
似乎我必须调用full_clean
才能执行验证。正如doc所说 -
请注意,调用模型的save()方法时,不会自动调用full_clean()。如果要为自己手动创建的模型运行一步模型验证,则需要手动调用它。
你应该把价值放在这个领域。所以你应该像这样构建它:
c = InvitationCode(group_id=1, code=1)
这就是您的模型创建方式。它不是自动场。