为管理面板创建自定义操作将显示值设置为 (None)
Creating Custom Actions for Admin Panel sets displayed values to (None)
我正在努力创建一些自定义操作以从 django 管理面板对我的数据执行。我在 models.py 中定义了这样的操作:
EX_MODERATION_CHOICES = (
('c', 'Check'),
('d', 'Display'),
('p', 'Pending'), )
并将以下内容添加到相应的模型字段中:
class Experience(models.Model):
...
ex_moderationstatus = models.CharField(db_column='EX_ModerationStatus', max_length=1, choices=EX_MODERATION_CHOICES)
当我点击管理面板并查看数据时,它显示的值设置为 (None)
。选择特定 ID 时,我可以看到要编辑的字段是一个下拉菜单,其中包含 EX_MODERATION_CHOICES 作为选项。我认为问题出在这里,只是不清楚解决方案。
如果我从列中删除选择字段,它会按照我的预期使用数据库中的正确值显示,例如 Display
。如果你愿意,可以看看照片。我基本上是逐字逐句地遵循文档,想知道是否有人对我遗漏的内容有任何见解。
我在 admin.py 中注册了这样的操作:
def make_moderation_status_pending(self, request, queryset):
rows_updated = queryset.update(ex_moderationstatus='p')
if rows_updated == 1:
message_bit = "1 Experience was"
else:
message_bit = "%s Experiences were" % rows_updated
self.message_user(request, "%s successfully marked as Pending." % message_bit)
您数据库中的数据与选择不一致。如果删除选项字段,它应该显示选项可迭代中的第一个字符串——它应该显示 "d" 而不是 "Display"。第一个元素是存储在数据库中的内容(docu)
因此,要么将选择列表更改为:
EX_MODERATION_CHOICES = (
('Check', 'Check'),
('Display', 'Display'),
('Pending', 'Pending'), )
请注意,此列表中缺少 "Deleted" 个选项。
或者您将数据库中的数据更改为值"d"等
我正在努力创建一些自定义操作以从 django 管理面板对我的数据执行。我在 models.py 中定义了这样的操作:
EX_MODERATION_CHOICES = (
('c', 'Check'),
('d', 'Display'),
('p', 'Pending'), )
并将以下内容添加到相应的模型字段中:
class Experience(models.Model):
...
ex_moderationstatus = models.CharField(db_column='EX_ModerationStatus', max_length=1, choices=EX_MODERATION_CHOICES)
当我点击管理面板并查看数据时,它显示的值设置为 (None)
。选择特定 ID 时,我可以看到要编辑的字段是一个下拉菜单,其中包含 EX_MODERATION_CHOICES 作为选项。我认为问题出在这里,只是不清楚解决方案。
如果我从列中删除选择字段,它会按照我的预期使用数据库中的正确值显示,例如 Display
。如果你愿意,可以看看照片。我基本上是逐字逐句地遵循文档,想知道是否有人对我遗漏的内容有任何见解。
我在 admin.py 中注册了这样的操作:
def make_moderation_status_pending(self, request, queryset):
rows_updated = queryset.update(ex_moderationstatus='p')
if rows_updated == 1:
message_bit = "1 Experience was"
else:
message_bit = "%s Experiences were" % rows_updated
self.message_user(request, "%s successfully marked as Pending." % message_bit)
您数据库中的数据与选择不一致。如果删除选项字段,它应该显示选项可迭代中的第一个字符串——它应该显示 "d" 而不是 "Display"。第一个元素是存储在数据库中的内容(docu)
因此,要么将选择列表更改为:
EX_MODERATION_CHOICES = (
('Check', 'Check'),
('Display', 'Display'),
('Pending', 'Pending'), )
请注意,此列表中缺少 "Deleted" 个选项。
或者您将数据库中的数据更改为值"d"等