Здравствуйте! Пытаюсь решить следующие задачи и не могу найти информацию о них в официальной документации Django. В моей модели данных есть поле c типом CharField, где есть возможность выбора одного из значений установленных в choices. По умолчанию в админку выводятся все значения, которые есть в choices. Как можно вывести лишь некоторые значения или сделать недоступным для выбора некоторые значения в choices? Например: для выбора сделать недоступным значения ''manager" и "singer". Также меня интересует как добиться такого же поведения в простой форме.
admin.pyclass MembershipInline(admin.TabularInline):
model = Membership
extra = 1
class MembershipAdmin(admin.ModelAdmin):
form = MembershipAdminForm
inlines = (MembershipInline,)
prepopulated_fields = {'slug': ('name',)}
admin.site.register(Group, MembershipAdmin)
forms.pyclass MembershipAdminForm(forms.ModelForm):
class Meta:
model = Membership
fields = '__all__'
def __init__(self, *args, **kwargs):
super(MembershipAdminForm, self).__init__(*args, **kwargs)
self.fields['role'].choices = tuple(choice for choice in ROLE_CHOICES if choice[0] not in ['manager', 'singer'])
models.pyclass Group(models.Model):
***FIELDS***
members = models.ManyToManyField(User, through='Membership')
ROLE_CHOICES = (
('singer', 'Singer'),
('musician', 'Musician'),
('manager', 'Manager'),
('guitarist', 'Guitarist'),
)
class Membership (models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
group= models.ForeignKey(Group, on_delete=models.CASCADE)
role = models.CharField(max_length=20, choices=ROLE_CHOICES,)