在Django中创建、更新和删除

在Django中创建、更新和删除,django,django-models,django-views,Django,Django Models,Django Views,目前,我只为我的models.py中的一些字段创建条目。现在我想在我的应用程序中添加Delete和Update函数。让我们以这个模型为例: class todoList(models.Model): trainee = models.ForeignKey(trainee, verbose_name = "Azubi", blank = True) todoLearningObjective = models.ManyToManyField(learningObjective, verbo

目前,我只为我的models.py中的一些字段创建条目。现在我想在我的应用程序中添加
Delete
Update
函数。让我们以这个模型为例:

class todoList(models.Model):
  trainee = models.ForeignKey(trainee, verbose_name = "Azubi", blank = True)
  todoLearningObjective = models.ManyToManyField(learningObjective, verbose_name = "Lernziel", blank = True, null = True)
  tasks = models.TextField(verbose_name = 'Aufgaben')
  levyDate = models.DateField(verbose_name = 'Abgabedatum', blank = True, null = True)
  priority = models.IntegerField(verbose_name = 'Prioritaet', blank = True, null = True)

  class Meta:
    verbose_name = "To-Do Liste"
    verbose_name_plural = "To-Do Listen"
匹配的表单

class todoListForm(forms.Form):
  formtrainee = forms.IntegerField(required = False)
  formtodoLearningObjective = forms.CharField(required = False)
  formtasks = forms.CharField(required = True)
  formlevyDate = forms.DateField(required = False)
  formpriority = forms.IntegerField(required = False)
def todo(request):
  trainee_objects = trainee.objects.all()
  usernameID = 1
  for traineeUser in trainee_objects:
    if traineeUser.username == request.user.username:
      usernameID = traineeUser.id

  if request.method == 'POST':
    forms = todoListForm(request.POST)
    if forms.is_valid():
      formtasks = forms.cleaned_data['formtasks']
      formtodoLearningObjective = forms.cleaned_data['formtodoLearningObjective']
      formlevyDate = forms.cleaned_data['formlevyDate']
      formpriority = forms.cleaned_data['formpriority']

      neueTodo=todoList(tasks=formtasks, levyDate=formlevyDate, priority=formpriority, trainee_id = usernameID)
      neueTodo.save()
      for todo in learningObjective.objects.filter(learningObjectives=formtodoLearningObjective):
        neueTodo.todoLearningObjective.add(todo)
    else:
      forms = todoList()
    return render(request, 'todo.html', {'todo': todoList.objects.all(), 'Lernziel': learningObjective.objects.all()})
以及视图

class todoListForm(forms.Form):
  formtrainee = forms.IntegerField(required = False)
  formtodoLearningObjective = forms.CharField(required = False)
  formtasks = forms.CharField(required = True)
  formlevyDate = forms.DateField(required = False)
  formpriority = forms.IntegerField(required = False)
def todo(request):
  trainee_objects = trainee.objects.all()
  usernameID = 1
  for traineeUser in trainee_objects:
    if traineeUser.username == request.user.username:
      usernameID = traineeUser.id

  if request.method == 'POST':
    forms = todoListForm(request.POST)
    if forms.is_valid():
      formtasks = forms.cleaned_data['formtasks']
      formtodoLearningObjective = forms.cleaned_data['formtodoLearningObjective']
      formlevyDate = forms.cleaned_data['formlevyDate']
      formpriority = forms.cleaned_data['formpriority']

      neueTodo=todoList(tasks=formtasks, levyDate=formlevyDate, priority=formpriority, trainee_id = usernameID)
      neueTodo.save()
      for todo in learningObjective.objects.filter(learningObjectives=formtodoLearningObjective):
        neueTodo.todoLearningObjective.add(todo)
    else:
      forms = todoList()
    return render(request, 'todo.html', {'todo': todoList.objects.all(), 'Lernziel': learningObjective.objects.all()})

如您所见,我有
M到M
关系,我正在创建新条目。我现在的问题是:我是否必须为每个模型创建一个新的更新和删除方法?还是有更简单的方法?我想让我的项目保持干涸,尽管我可能已经失败了。如果您能给我一个示例或文档,说明Django中的删除和更新是如何工作的,那就太棒了。

您已经为此构建了基于类的视图

from django.views.generic import CreateView,UpdateView,DeleteView

class Todo(CreateView):
    formClass = todoListForm
    template_name = 'your_template_name.html'

首先,您应该使用ModelForms,而不是在表单中再次定义所有字段,然后在视图中进行设置。是的,但我花了一些时间才弄清楚该怎么做:D