OperationalError at /profile/ no such table: users_profile even after I made migrations

У меня такая проблема. Когда я пытаюсь открыть страницу профиля, чтобы увидеть фото пользователя, но не могу, когда я удаляю строку с user.register.photo, она работает. Я создал модель, где есть поле, которое позволяет пользователям загружать фото, но когда я пытаюсь открыть "profile/", он показывает эту ошибку. Похоже, что проблема в миграциях. Я пытался удалить папку migration, базу sqlite3 и снова сделать migrations, но после использования makemigrations он показал, что "нет изменений". Мне это не помогло, как я могу решить эту проблему?

users/models.py

from django.db import models
from django.contrib.auth.models import User


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
     image = models.ImageField(default='default.jpg', upload_to='profile_pics')

def __str__(self):
    return f'{self.user.username} Profile'

users/views.py

from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import UserRegisterForm
from django.contrib.auth.decorators import login_required


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Создан аккаунт {username}!')
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})


@login_required
def profile(request):
    return render(request, 'users/profile.html')

users/forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

users/templates/users/profile.html

{% extends "main/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
    <div class="content-section">
      <div class="media">
        <img class="rounded-circle account-img" src="{{ user.profile_image.url }}">
        <div class="media-body">
          <h2 class="account-heading">{{ user.username }}</h2>
          <p class="text-secondary">{{ user.email }}</p>
        </div>
      </div>
      <!-- Здесь будет форма -->
    </div>
</div>
{% endblock content %}

users/migrations/0001_initial.py

 from django.conf import settings
 from django.db import migrations, models
 import django.db.models.deletion


class Migration(migrations.Migration):

initial = True

dependencies = [
    migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
    migrations.CreateModel(
        name='Profile',
        fields=[
            ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('image', models.ImageField(default='default.jpg', upload_to='profile_pics')),
            ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
        ],
    ),
]

Если вы столкнулись с проблемой миграции, удаление папок миграции не является хорошим подходом, потому что если у вас были файлы миграции в папке миграции и вы уже выполнили команду python manage.py migrate, схема, определенная в файлах миграции, была отправлена в базу данных. также, имена этих файлов миграции внесены в таблицу django_migrations в базе данных,

Представьте, что у нас есть папка migration в simple_app с этими файлами миграции и проблема связана с последним файлом миграции:

first_migration.py
second_migration.py
third_migration.py

Итак, что мы должны сделать, если хотим удалить последний файл миграции:

  1. Нужно отменить применение этой миграции из DB, выполнив эту команду:

    python manage.py migrate simple_app second_migration

после этого вы увидите что-то вроде:

Running migrations:
    Rendering model states... DONE
    Unapplying simple_app.third_migration OK

эта команда выполняет 2 действия, первое: отменяет изменения схемы таблицы в файле миграции, второе: удаляет имя файла миграции из таблицы django_migration)

  1. Нужно удалить файл third_migration.py из папки migration

После этих шагов вы можете исправить проблему с моделью и после этого вы можете выполнить команды makemigrations и migrate для повторного выполнения изменений в базе данных

Потому что вы не выполнили указанные шаги, вы получаете сообщение "нет изменений", выполните шаги, и я думаю, что ваша проблема будет решенаenter code here

Вернуться на верх