Django Integrity Error 1048 cannot be null
Под views.py
def addcomments(request):
comment_text = request.POST.get('comment')
user_id = request.POST.get('user_id')
name = request.POST.get('name')
email = request.POST.get('email')
comment = Comment.objects.create(user_id=user_id, body=comment_text, name=name, email=email)
comment.save()
return HttpResponseRedirect(reverse('users:detail', args=(user_id, )))
вот этот, из файла detail.html
{% extends 'base.html' %}
{% block title %}
{{ user.user_fname }} {{ user.user_lname }}
{% endblock %}
{% block content %}
{% if error_message %}
<p class="alert alert-danger">
<strong>{{error_message}}</strong>
</p>
{% endif %}
<div class="row">
<div class="col-lg-6">
<div class="mb-5">
<h1>{{ user.user_fname }} {{ user.user_lname }}</h1>
<p class="text-muted">{{ user.user_email }}</p>
<p>Position: {{ user.user_position }}</p>
</div>
<div class="img-responsive">
<img src="/users/media/{{user.user_image}}" alt="profile_user" class="img-rounded" width="300">
<!-- ito yung hinahanap ng search engine-->
</div>
<div class="btn-group mt-5">
<a href="{% url 'users:delete' user.id %}" class="btn btn-sm btn-danger">Delete</a>
<a href="{% url 'users:edit' user.id %}" class="btn btn-sm btn-info">Edit</a>
<a href="{% url 'users:index'%}" class="btn btn-sm btn-success">Back</a>
</div>
</div>
<div class="col-lg-6">
<h2>Comment</h2>
<p class="text-muted"> Number of comment : {{ comments_count }}</p>
{% if comments_count > 0 %}
{% for comment in comments %}
{% if comment.active %}
<p><strong>{{comment.name}}</strong> : {{comment.body}}</p>
{% endif %}
{% endfor %}
{% endif %}
<hr>
<br><br><br><br><br><br>
<form action="{%url 'users:addcomments'%}" method="post">
{% csrf_token %}
<div class="form-group">
<label>Comment</label>
<textarea name="comment" id="comment" cols="30" rows="5" class="form-control" required placeholder="Enter your comment here ..."></textarea>
</div>
<br>
<input type="text" name="name" id="name" value="{{ user.user_lname }}">
<input type="text" name="lname" id="lname" value="{{ user.user_fname }}">
<input type="text" name="email" id="email" value="{{ user.user_email }}">
<br><br><br><br>
<button type="submit" class="btn btn-sm btn-primary">Add Comment</button>
</form>
</div>
</div>
{% endblock %}
этот для url.py
path('addcomments', views.addcomments, name='addcomments'),
У меня сообщение об ошибке,
<Во время обработки вышеуказанного исключения ((1048, "Column 'user_id' cannot be null")) произошло другое исключение:
из 404
users\views.py, строка 146, в addcomments
comment = Comment.objects.create(user_id=users_id, body=comment_text, name=name, email=email) ...
Локальные переменные
Значение переменной
comment_text
'wwerwr'
email
'HeavyRain@gmail.com'
имя
'Heavy'
запрос
<WSGIRequest: POST '/users/addcomments'>
идентификатор пользователя
None
детали тяжести, не обращайте внимания, пробовал всякие штуки
У вас нет поля user_id
в html-форме, поэтому она становится None
или null
, а поскольку вы не позволяете вашему user_id быть никаким (не позволяете ему быть никаким), django не может создать ее. Я предлагаю вам избавиться от user_id
при создании и поискать пользователя с точно таким же уникальным именем пользователя, который разместил форму с
user = request.user
comment = Comment.objects.create(user=user, body=comment_text, name=name, email=email)
from django import forms
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = [...]
Посмотрите дополнительную информацию в документации.
Простите, но используйте типовую форму. Это наиболее подходящее решение. Она справится с рендерингом вашей формы в html и обеспечит чистоту и валидацию данных.