Trong một ModelForm, tôi phải kiểm tra phép người sử dụng để cho họ điền vào các lĩnh vực phải:Loại bỏ một lĩnh vực từ một ModelForm động
Nó được định nghĩa như thế này:
class TitleForm(ModelForm):
def __init__(self, user, *args, **kwargs):
super(TitleForm,self).__init__(*args, **kwargs)
choices = ['','----------------']
# company
if user.has_perm("myapp.perm_company"):
self.fields['company'] = forms.ModelChoiceField(widget=forms.HiddenInput(),
queryset=Company.objects.all(), required=False)
choices.append(1,'Company')
# association
if user.has_perm("myapp.perm_association")
self.fields['association'] =
forms.ModelChoiceField(widget=forms.HiddenInput(),
queryset=Association.objects.all(), required=False)
choices.append(2,'Association')
# choices
self.fields['type_resource'] = forms.ChoiceField(choices = choices)
class Meta:
Model = Title
ModelForm này làm công việc : tôi ẩn từng trường trên mẫu và làm cho chúng xuất hiện nhờ javascript ...
Vấn đề là ModelForm này là mỗi trường được xác định trong mô hình sẽ được hiển thị trên mẫu.
Tôi muốn xóa chúng khỏi biểu mẫu nếu chúng không cần thiết:
ví dụ: nếu người dùng không có quyền trên công ty mô hình, nó sẽ không được sử dụng trong biểu mẫu được hiển thị trong mẫu.
Vấn đề đó là bạn cần phải đặt danh sách các lĩnh vực trong lớp Meta dạng với lĩnh vực hoặc loại trừ thuộc tính, nhưng tôi không biết làm thế nào để quản lý chúng tự động.
Bất kỳ ý tưởng nào ??
Cảm ơn trước vì bất kỳ câu trả lời nào.
Vâng, đó là rõ ràng !!!! Chỉ cần phải xác định tất cả các trường trong lớp Meta và sau đó loại bỏ nếu không hữu ích ... Cảm ơn rất nhiều! –
điều này sẽ không hoạt động nếu bạn đã xác định fieldset trên ví dụ trong ModelAdmin. –