【问题标题】:Difficulty adding widget to django project难以将小部件添加到 django 项目
【发布时间】:2020-04-25 03:55:11
【问题描述】:

首先我为这个非常基本的问题道歉,但我目前正在学习开发并阅读了很多文档并进行了很多搜索,但仍然无法正常工作。

我正在使用 Django 框架构建网站,并尝试添加 django-bootstrap-datepicker-plus 小部件。我很难弄清楚代码的不同部分应该去哪里。我在下面的 model.py 和 forms.py 文件中包含了 sn-ps。表单和现在一样工作,但是当我尝试添加 datePicker 小部件时遇到很多问题。

我已将适当的文件添加到 INSTALLED_APPS。

class PersonalInformation(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    GENDERS = (
        ('M', 'Male'),
        ('F', 'Female'),
    )

    first_name = models.CharField(max_length=200, default='')
    surname = models.CharField(max_length=200, default='')
    gender = models.CharField(max_length=1, choices=GENDERS)
    dob = models.DateTimeField(datetime.datetime.now())
class PersonalInformationForm(forms.ModelForm):
    class Meta:
        model = PersonalInformation

        # i know this bit is wrong but cannot fix it
        dob = forms.DateField(widget=DatePickerInput(format='%m/%d/%Y'))
        
        fields = ['first_name', 'surname', 'gender', 'dob']

它运行,但是 dob 字段只显示用户创建时保存的时间戳(我实际上根本不想保存日期,直到用户输入一个日期,但我必须设置一个默认值,否则它不会迁移)并且不显示小部件。

非常感谢您,对于这个非常基本的问题,我深表歉意,但我已经花了几个小时试图弄明白,我只是在兜圈子。

【问题讨论】:

  • 你究竟困在哪里?你得到什么类型的错误?首先,您需要一个日期或时间字段来使用日期选择器,我在您的模型或表单中看不到任何内容。
  • @EdgardoObregón 抱歉,我编辑了代码并添加了它

标签: django


【解决方案1】:

1) 您可以在 Date 字段中设置 null True,默认为 None,这样每次保存新实例时都不会得到默认 now()。

dob = models.DateTimeField(null=True, default=None)

2) 在您的表单中,要以您尝试的方式覆盖默认字段小部件,您必须在 Meta 类之外进行:

class PersonalInformationForm(forms.ModelForm):

   dob = forms.DateField(widget=DatePickerInput(format='%m/%d/%Y'))
   class Meta:
      model = PersonalInformation
      fields = ['first_name', 'surname', 'gender', 'dob']

或者使用 Meta 类中的小部件属性:

class PersonalInformationForm(forms.ModelForm):

      class Meta:
         model = PersonalInformation
         fields = ['first_name', 'surname', 'gender', 'dob']
         widgets = {
            'dob': DatePickerInput(format='%m/%d/%Y')
         }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多