72

Djangoの使い方を練習するために、やることリストのWebサイトを実装しようとしています。models.pyには、Itemやること項目を表すために呼び出されるクラスがあります。その中に、私は次の行を持っています:

due_date = models.DateTimeField(required=False)

due_dateユーザーがやること項目の期限がある場合のオプションのフィールドであることが意図されています。TypeError問題は、上記の行が予期しないキーワード引数'required'のために私に与えることです。

そのため、キーワード引数「required」を使用できないようですDateTimeField。オプションにする方法はありDateTimeFieldますか?または、私が抱えている問題の標準的な実装はありますか?

4

3 に答える 3

132

「required」はDjangoフォームの有効な引数です。モデルの場合、キーワードargs blank=True(管理者用)およびnull=True(データベース用)が必要です。

于 2012-07-05T19:59:48.057 に答える
36

使用する due_date = models.DateTimeField(null=True, blank=True)

詳細については、フィールドオプションを確認してください。

于 2012-07-05T19:58:16.267 に答える
-1

フォームを保存する前に、日付フィールドを[なし]に設定する必要があります。その作品は私のために

class ActividadEdit(SuccessMessageMixin, UpdateView ):
model = Ges_Actividad
form_class = GestionActividadesUpdateForm
template_name = 'seguimiento_formula/actividades_seguimiento_update.html'

def post(self, request, *args, **kwargs):
    form_class = self.get_form_class()
    self.object = self.get_object()
    id_actividad = kwargs['pk']
    instancia_nivel = self.model.objects.get(id=id_actividad)
    form = self.form_class(request.POST, instance=instancia_nivel)
    id_usuario_actual = self.request.user.id  # obtiene id usuario actual

    try:
        periodo_actual = Glo_Periodos.objects.get(id_estado=1)
    except Glo_Periodos.DoesNotExist:
        return None

    try:
        id_jefatura = Ges_Jefatura.objects.get(Q(id_user=id_usuario_actual) & Q(id_periodo=periodo_actual.id))
    except Ges_Jefatura.DoesNotExist:
        return None

    try:
        usuario_controlador = Ges_Controlador.objects.get(id_jefatura=id_jefatura.id)
    except Ges_Controlador.DoesNotExist:
        return None
   #**before you save the form you need to set the datefields to None. Its works for me**.
    form.instance.fecha_real_termino = None
    form.instance.fecha_real_termino = None
    form.instance.fecha_real_termino = None


    if form.is_valid():

        if self.request.session['id_orden'] == 2:
            id_objetivo = Ges_Objetivo_Tactico.objects.get(id=self.request.session['id_objetivo'])
            form.instance.id_objetivo_tactico = id_objetivo

        if self.request.session['id_orden'] == 3:
            id_objetivo = Ges_Objetivo_TacticoTN.objects.get(id=self.request.session['id_objetivo'])
            form.instance.id_objetivo_tacticotn = id_objetivo

        if self.request.session['id_orden'] == 4:
            id_objetivo = Ges_Objetivo_Operativo.objects.get(id=self.request.session['id_objetivo'])
            form.instance.id_objetivo_operativo = id_objetivo

        form.save()
        request.session['message_class'] = "alert alert-success"
        messages.success(self.request, "Los datos fueron actualizados correctamente!")
        return HttpResponseRedirect('/actividades/detalle/' + str(self.request.session['id_objetivo']))
    else:
        request.session['message_class'] = "alert alert-danger"
        messages.error(self.request,
                       "Error interno: No se ha creado el registro. Comuníquese con el administrador.")
        return HttpResponseRedirect('/actividades/detalle/' + str(self.request.session['id_objetivo']))
于 2020-05-27T14:32:03.793 に答える