2011-09-07 32 views
50

Mỗi lần tôi nhập vào trình phát mới trong phần Quản trị của Django, tôi nhận được thông báo lỗi cho biết "Trường này là bắt buộc".Tôi có thể tạo trường quản trị không bắt buộc trong Django mà không cần tạo biểu mẫu không?

Có cách nào để tạo trường không bắt buộc mà không phải tạo biểu mẫu tùy chỉnh không? Tôi có thể làm điều này trong models.py hoặc admin.py không?

Đây là lớp của tôi trong models.py.

class PlayerStat(models.Model): 
    player = models.ForeignKey(Player) 

    rushing_attempts = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Attempts" 
     ) 
    rushing_yards = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Yards" 
     ) 
    rushing_touchdowns = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Touchdowns" 
     ) 
    passing_attempts = models.CharField(
     max_length = 100, 
     verbose_name = "Passing Attempts" 
     ) 

Cảm ơn

+2

Cách đơn giản nhất là sử dụng tùy chọn trường trống = True (https://docs.djangoproject.com/en/dev/ref/models/fields/#blank). Có lý do gì không hiệu quả? –

Trả lời

99

Chỉ Đặt

blank=True 

trong tức là mô hình của bạn .:

rushing_attempts = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Attempts", 
     blank=True 
     ) 
+0

Hãy lưu ý rằng nếu bạn sử dụng "biểu mẫu", dấu = = true sẽ không hoạt động. Ví dụ. ở đây blank = true từ mô hình sẽ không hoạt động: class MusModelForm (forms.ModelForm): name = forms.CharField (widget = forms.Textarea) # ~ mitglieder = forms.CharField (widget = forms.Textarea) class Meta: model = Nhạc sĩ – Timo

3

Sử dụng trống = True, null = True

class PlayerStat(models.Model): 
    player = models.ForeignKey(Player) 

    rushing_attempts = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Attempts", 
     blank=True, 
     null=True 
     ) 
    rushing_yards = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Yards", 
     blank=True, 
     null=True 
     ) 
    rushing_touchdowns = models.CharField(
     max_length = 100, 
     verbose_name = "Rushing Touchdowns", 
     blank=True, 
     null=True 
     ) 
    passing_attempts = models.CharField(
     max_length = 100, 
     verbose_name = "Passing Attempts", 
     blank=True, 
     null=True 
     ) 
+1

Bạn không cần "null = True" trên CharFields ít nhất là từ Django 1.6 về phía trước, có lẽ thậm chí sớm hơn. Tương tự cho TextField, SlugField, EmailField, ... bất cứ thứ gì được lưu dưới dạng văn bản. – jenniwren

+0

Django không đề xuất "null = True" cho các trường có chứa văn bản. – kas

Các vấn đề liên quan