我正在努力创建一些自定义操作,以便从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)
答案 0 :(得分:0)
您的数据库中的数据与选项不一致。如果删除选项字段,它应显示可迭代选项中的第一个字符串 - 它应显示“d”而不是“显示”。第一个元素是存储在数据库中的内容(docu)
因此,您可以将选项列表更改为:
EX_MODERATION_CHOICES = (
('Check', 'Check'),
('Display', 'Display'),
('Pending', 'Pending'), )
请注意,此列表中缺少“已删除”选项。
或者您将数据库中的数据更改为值“d”等。