首页 > 解决方案 > Django:默认将用户名保存在表单中

问题描述

我正在尝试构建一个任务管理器。我应该为创建者用户设置一个字段,为目标用户设置另一个字段。

我意识到我无法定义指向同一用户列表的 2 个外键字段,因此我将目标用户字段作为创建者用户选择的外键字段,然后我尝试将活动用户名设置为创建者在视图中。

表单存储所有收集的数据,但不存储视图中的一组数据。我没有收到错误,但没有保存该值。

该模型

class Tareas(models.Model):
    creador = models.CharField(max_length=100, help_text="Creador", blank=True, null=True)
    destinatario = models.ForeignKey(User, help_text="Estatus del contenido", blank=True, null=True, on_delete=models.CASCADE)
    titulo = models.CharField(max_length=100, help_text="Título de la tarea", blank=True, null=True)
    tarea = models.TextField(max_length=500, help_text="Explicación de la tarea", blank=True, null=True)
    resuelto = models.BooleanField(default=True)
    fecha_creacion = models.DateField(help_text="Fecha de creación", default=datetime.date.today, blank=True, null=True)
    fecha_limite = models.DateField(help_text="Fecha límite", default=datetime.date.today, blank=True, null=True)
    fecha_resuelto = models.DateField(help_text="Fecha de resolución", default=datetime.date.today, blank=True, null=True)

    def __str__(self):
        return str(self.titulo)

表格

class FormularioTareas(forms.ModelForm):
    class Meta:
        model = Tareas
        widgets = {'fecha_limite': forms.DateInput(attrs={'class': 'datepicker'})}
        fields = ["destinatario", "titulo", "tarea", "resuelto", "fecha_limite", "creador", "fecha_creacion"]

风景

@login_required
def TareasView(request):

    tareas_form = FormularioTareas(request.POST)
    tareas = Tareas.objects.all()
    tareas = tareas.order_by("-fecha_creacion")

    if request.method == "POST":
        tareas_form = FormularioTareas(request.POST)
        if tareas_form.is_valid():
            tarea = tareas_form.save(commit=False)
            tarea.creador = request.user.username
            tarea.fecha_creacion = date.today()
            tarea.save()

    return render(request, 'catalog/tareas.html', {
        'tareas_form': tareas_form,
        'tareas': tareas
    })

标签: djangodjango-forms

解决方案


推荐阅读