使用charfield在一篇文章中将多个条目添加到数据库

时间:2019-11-26 19:19:29

标签: django django-forms

我正在构建一个待办应用,目前,人们当时只能添加一个“任务”

我希望允许用户拥有多个文本区域(例如5个),以便他们可以在一个帖子中添加多个任务。

您可以在图片上看到,只有一个输入可用,我不能添加多于一个的错误。

enter image description here

我认为也许可以在模型“ todo”中添加多个charfield,但这看起来很难看。

Models.py

class Todo(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="Nom de l'utilisateur")
text = models.CharField(max_length=150, verbose_name="Nom de la Todo")
content = models.TextField(verbose_name="Description supplémentaire",null=True, blank=True)
date_posted = models.DateTimeField(default=timezone.now)
complete = models.BooleanField(default=False, verbose_name="Statut de la Todo")
urgence = models.BooleanField(default=False,verbose_name="Tâche urgente")

def __str__(self):
    return self.text

def get_absolute_url(self):
    return reverse('dashboard-home') 

todo_form.html

 <form method="POST">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">Ajouter une tâche à faire</legend>

            {{ form|crispy }}

        <div class="form-group">
            <button class="btn btn-success" type="submit">Envoyer</button>
        </div>
    </form>

1 个答案:

答案 0 :(得分:1)

您将需要添加多个待办事项实例并使用一个表单集。

在这种情况下可能会非常有用。

查看https://docs.djangoproject.com/en/2.2/topics/forms/formsets/,了解如何使用工厂和创建模型。

https://github.com/dallasmorningnews/django-dynamic-formsets在使前端可用方面取得了成功。

基本模型设置可能是:

class User(models.Model):
    username = models.TextField()

class Todo(models.model):
    task = models.Textfield()
    author = models.ForeignKey(User, related_name="todos", on_delete=models.Protect)

基本的表单集设置可能类似于:

TodoFormSet = inlineformset_factory(User, Todo, fields=('task',))
user = User.objects.get(username='Mcflan_7')
formset = TodoFormSet(instance=user)