Saf*_*ari 2 python django django-models django-orm django-admin
在一个模型中,我有一个UUIDField这样的:
uuid = models.UUIDField(_('UUID'), primary_key=True, default=uuid.uuid4, editable=False)
Run Code Online (Sandbox Code Playgroud)
在相应的管理中,我会按 uuid 值进行搜索。所以我有:
class MyAdmin(admin.ModelAdmin):
search_fields = ('uuid',)
Run Code Online (Sandbox Code Playgroud)
但以这种方式它不会产生任何结果。我需要考虑一下吗?我使用 Django 1.11
当在管理站点中通过list_display并可能在其他地方显示 UUIDField 时,Django 使用破折号格式化 UUID,因此您可能正在使用破折号进行搜索。但是,它在数据库中存储时不带破折号,如果您进行不带破折号的搜索,它应该会按预期工作。
如果您不喜欢list_display输出中的差异,您可以考虑更改其显示方式(未经测试):
class MyModel(models.Model):
uuid = models.UUIDField(_('UUID'), primary_key=True, default=uuid.uuid4, editable=False)
def clean_uuid(self):
return self.uuid.replace('-', '')
class MyAdmin(admin.ModelAdmin):
list_display = ('clean_uuid',)
search_fields = ('uuid',)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |