我在尝试使用Django admin从管理部分保存模型时遇到了这个错误,这就是错误Field 'object_id' expected a number but got 'id_b2cbfe2b1fd4313c'.
。我正在使用djangoshortuuid
软件包https://pypi.org/project/shortuuid/在django中创建id
字段,我选择使用它,因为内置的UUID
字段一直给出这个错误Django UUIDField shows 'badly formed hexadecimal UUID string' error?
,id看起来像这个id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
。短uuid字段有什么问题。
基于此,我引用:
如果您在ForeignKey上进行筛选,那么Django将在目标对象的主键上进行筛选——这通常是一个AutoField,除非您引用了另一个(唯一(列,或者将另一个主键定义为字段。
但我不知道现在可能有什么问题
型号.py
class Channel(models.Model):
id = ShortUUIDField( length=16, max_length=40, prefix="id_", alphabet="abcdefg1234", primary_key=True,)
full_name = models.CharField(max_length=200)
user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True, related_name="channel")
Views.py
def channel_profile(request, channel_name):
channel = Channel.objects.get(id=channel_name, status="active")
context = {
"channel": channel,
}
return render(request, "channel/channel.html", context)
您的数据库与迁移文件不同步,因为您的问题很容易解决,Django需要一个ID(integrer(,而您正在传递一个字符串。
如果您还没有将项目投入生产,您可以删除迁移文件夹并再次迁移,否则您需要更新迁移文件以更改UD字段的类型