nền
Tôi có một mô hình với hai lĩnh vực được thiết lập vào chỗ trống:Tại sao "trống" bị thiếu trong django.forms.CharField, nhưng hiện diện trong django.db.models.CharField?
class News(models.Model):
title = models.CharField(max_length = 50, blank = True)
info = models.TextField(blank = True)
Cái này là tôi muốn thiết lập các max_length
động khi biểu mẫu được xây dựng, vì vậy tôi có một hình thức tùy chỉnh :
class NewsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)
title_max_length = 20
info_max_length = 100
self.fields["title"] = forms.CharField(max_length = title_max_length)
self.fields["info"] = forms.CharField(
widget = forms.Textarea,
validators = [
MaxLengthValidator(info_max_length)
]
)
lưu ý: hai giá trị chiều dài thực sự lấy từ cơ sở dữ liệu, nhưng tôi quyết định không bao gồm mã để giữ ví dụ ngắn hơn.
Vấn đề
Khi tôi đang sử dụng những tùy chỉnh các lĩnh vực tùy chọn blank
bị ghi đè/bỏ qua.
Tôi đã cố gắng chỉ thêm max_length, widget và xác nhận đến các lĩnh vực hiện có, như thế này:
class NewsForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewsForm, self).__init__(*args, **kwargs)
title_max_length = 20
info_max_length = 100
self.fields["title"].max_length = title_max_length
self.fields["info"].widget = forms.Textarea
self.fields["info"].validators = [MaxLengthValidator(info_max_length)]
Khi làm điều này tùy chọn blank
hoạt động, nhưng max_length động không được áp dụng cho các hình thức.
Tôi đã cố gắng tìm trong nguồn django, nhưng tôi khá mới nên nó quá nhiều để có ngay bây giờ.
Có cách nào để tôi có thể đạt được điều này không?
Bạn đã thử thêm tham số bắt buộc = False vào biểu mẫu của mình chưa? –
@AlagappanRamu: Không, tôi thì không. Tôi đã quá tập trung vào việc tìm kiếm "trống" mà tôi đã bỏ lỡ nó trong tài liệu. Tôi đã thêm 'required = False' vào quá trình tạo' CharField' và đã giải quyết được vấn đề. Viết bình luận của bạn như là một câu trả lời để tôi có thể chấp nhận nó và upvote nó. Cảm ơn bạn! – rzetterberg
Đã thêm làm câu trả lời! Cảm ơn. –