Django:管理员:在管理员中更改字段的小部件 [英] Django: Admin: changing the widget of the field in Admin

查看:43
本文介绍了Django:管理员:在管理员中更改字段的小部件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有类似布尔值的模型:

I have a model with a boolean value like that:

class TagCat(models.Model):
    by_admin = models.BooleanField(default=True) 

这在管理员中显示为一个复选框.

This appears as a checkbox in admin.

  1. 如何在管理中使用它作为单选按钮?
  2. 另外,我如何让它在管理员中始终具有某个选定的值?
  3. 另外,当非管理员用户添加 TagCat 时,我希望默认值相反.这个字段应该对他隐藏.
  1. How could I use this as a radio button in admin?
  2. Also, how do I make it be always with a certain selected value in admin?
  3. Also, I want the default value to be the opposite, when a non-admin user adds a TagCat. This field should be hidden from him.

谁能告诉我怎么做?Django 文档似乎没有详细说明.

Can someone tell me how to do this? Django documentation doesn't seem to go in such details.

推荐答案

更新 1:让我完成 1) 的代码(不要忘记将 CHOICES 传递给模型中的 BooleanField)

UPDATE 1: Code that gets me done with 1) (don't forget tot pass CHOICES to the BooleanField in the model)

from main.models import TagCat
from django.contrib import admin
from django import forms

class MyTagCatAdminForm(forms.ModelForm):
    class Meta:
        model = TagCat
        widgets = {
            'by_admin': forms.RadioSelect
        }
        fields = '__all__' # required for Django 3.x
    
class TagCatAdmin(admin.ModelAdmin):
    form = MyTagCatAdminForm


admin.site.register(TagCat, TagCatAdmin)

单选按钮看起来丑陋且移位,但至少它们可以工作

The radio buttons appear ugly and displaced, but at least, they work

  1. 我在 MyModel.py 中使用以下信息解决了:

BYADMIN_CHOICES = (
    (1, "Yes"),
    (0, "No"),
)

class TagCat(models.Model):
    by_admin = models.BooleanField(choices=BYADMIN_CHOICES,default=1)

这篇关于Django:管理员:在管理员中更改字段的小部件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆