我正在构建一个待办应用,目前,人们当时只能添加一个“任务” 。
我希望允许用户拥有多个文本区域(例如5个),以便他们可以在一个帖子中添加多个任务。
您可以在图片上看到,只有一个输入可用,我不能添加多于一个的错误。
我认为也许可以在模型“ 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>
答案 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)