NOT NULL constraint failed
Не могу понять что я делаю не так.
Выдает ошибку:
NOT NULL constraint failed: tasks_solutions.created_by_id
models.py
class Task(models.Model):
title = models.CharField(max_length=255, verbose_name='Название задачи')
slug = models.SlugField(max_length=255, verbose_name='Url', unique=True)
created_by = models.ForeignKey(AdvUser, editable=False, on_delete=models.CASCADE) # editable=False,
description = models.TextField(verbose_name='Описание задачи')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='Опубликовано')
views = models.IntegerField(default=0, verbose_name='Кол-во просмотров')
category = models.ManyToManyField(Category, blank=True, related_name='category')
tags = models.ManyToManyField(Tag, blank=True, related_name='tasks')
is_active = models.BooleanField(default=True, db_index=True, verbose_name='Выводить в списке?')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('tasks:task', kwargs={"slug": self.slug})
class Meta:
verbose_name = 'Задача'
verbose_name_plural = 'Задачи'
ordering = ['-created_at']
class Solutions(models.Model):
tasks = models.ForeignKey(Task, on_delete=models.CASCADE, verbose_name='Решания к задачи')
created_by = models.ForeignKey(AdvUser, editable=False, on_delete=models.CASCADE)
content = models.TextField(verbose_name='Содержание')
is_active = models.BooleanField(default=True, db_index=True, verbose_name='Выводить на экран?')
created_at = models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='Опубликован')
class Meta:
verbose_name_plural = 'Решания'
verbose_name = 'Решение'
ordering = ['-created_at']
forms.py
from tasks.models import Solutions
from django import forms
class UserTaskForm(forms.ModelForm):
class Meta:
model = Solutions
exclude =('is_active',)
widgets = {'tasks': forms.HiddenInput,}
views.py
def detail(request, slug):
task = Task.objects.get(slug=slug)
solution = Solutions.objects.filter(tasks=task, is_active=True)
initial = {'tasks': task.id}
task.views = F('views') + 1
task.save()
task.refresh_from_db()
if request.user.is_authenticated:
initial['created_by'] = request.user.id
form_class = UserTaskForm
form = form_class(initial=initial)
if request.method == 'POST':
c_form = form_class(request.POST)
if c_form.is_valid():
c_form.tasks = task
#c_form.created_by = request.user
c_form.save()
messages.add_message(request, messages.SUCCESS,
'Решение Добавлено')
else:
form = c_form
messages.add_message(request, messages.WARNING,
'Решения не добавлено')
context = {'solution': solution, 'task': task, 'form': form}
return render(request, 'tasks/views.html', context)
Ответы (1 шт):
Автор решения: Миша
→ Ссылка
В модели Solutions и в модели Task у поля created_by добавьте null=True