我是django管理员功能的新手。在我的联系人模型中,我有一个名为seen的BooleanField。在django默认管理员中,当用户进入联系人模型的详细信息页面时,我想更改seed的状态False
至True
。但是我没有找到使用django admin的任何解决方案。
models.py
class Contact(models.Model):
full_name = models.CharField(max_length=255)
email = models.EmailField()
sub = models.CharField(max_length=100)
msg = models.TextField()
seen = models.BooleanField(default=False)
admin.py
class ContactAdmin(admin.ModelAdmin):
readonly_fields = ['full_name','email','sub','msg','seen']
list_filter = ['seen']
search_fields = ['full_name']
admin.site.register(Contact,ContactAdmin)
答案 0 :(得分:1)
类似的事情应该起作用。覆盖详细信息视图的change_view
方法。以下是django参考资料/文档,用于覆盖默认的管理员视图:https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#other-methods
from django.shortcuts import get_object_or_404
...
class ContactAdmin(admin.ModelAdmin):
readonly_fields = ['full_name','email','sub','msg','seen']
list_filter = ['seen']
search_fields = ['full_name']
def change_view(self, request, object_id, form_url='', extra_context=None):
contact = get_object_or_404(Contact, id=object_id)
contact.seen = True
contact.save()
return super().change_view(
request, object_id, form_url, extra_context=extra_context,
)
admin.site.register(Contact,ContactAdmin)