При создании модели django она публикует данные, но не сохраняет их в базе данных. - PullRequest
0 голосов
/ 19 декабря 2018

Я могу создавать объекты модели через админ-панель.Но я хочу, чтобы это было создано на сайте.Приведенный ниже код позволяет мне вводить значения модели, и когда я отправляю ее, она перенаправляет на письменный URL, что происходит после form.save.Это сообщение с сервера "POST /taskcreate HTTP/1.1" 302 0.Но нет никаких изменений в базе данных.Как решить эту проблему?Есть мысли ... Спасибо

models.py

class Task(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=1000)
    pub_date = models.DateTimeField('date_published', auto_now_add = True)
    cost = models.IntegerField()
    def __str__(self):
        return '%s' % (self.name)

forms.py

class TaskCreateForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('name', 'description', 'cost')

views.py

def TaskCreateView(request):
    if request.method == 'POST':
        form = TaskCreateForm(request.POST)
        if form.is_valid():
            form.save
            return redirect('home')
    else:
        form = TaskCreateForm()
    return render(request, 'employer/create_task.html')

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Когда вы используете ModelForm , вам просто нужно написать form.save() метод сразу после if is_valid(), если это так.В вашем случае вам не хватает фигурных скобок после сохранения .

def TaskCreateView(request):
    if request.method == 'POST':
        form = TaskCreateForm(request.POST)
        if form.is_valid():
            form.save() # here you were missing curly brackets
            return redirect('home')
    else:
        form = TaskCreateForm()
    return render(request, 'employer/create_task.html')
0 голосов
/ 19 декабря 2018

Вы на самом деле не вызывали метод сохранения.

if form.is_valid():
    <strong>form.save()</strong>
    return redirect('home')
...