Изучаю Django и хочу сделать пробную подписку. Нашел одно решение, но не совсем понимаю, почему у меня не работает. Все глохнет на моменте создания класса в models.py.
У меня есть три приложения (main, news, users). В данном вопросе важны только main и users.
1. В приложении 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'
Дальше сделал все по инстукции (views.py, admin.py и т.д.). Регистрация, автоматизация, доступ только зарегестрированным и т.д. Все прекрасно работает.
2. В приложение main, хочу создать подписочную модель, которая бы давала доступ на время. Нашел модель приблизительно следующую:
from django.db import models
from django.conf import settings
class Subscription(models.Model):
order_id = models.CharField(max_length=512, null=True, blank=True)
expires = models.DateTimeField(null=True,blank=True)
value = models.CharField(max_length=32, null=True, blank=True)
active = models.BooleanField(default=False)
plan = models.CharField(max_length=8, null=True, blank=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
3. Ну думаю, ок. Читаю, settings.AUTH_USER_MODEL - это модель пользователя указывающаяся в настройках проекта.
4. Прописываю в settings.py , такую переменную: AUTH_USER_MODEL = 'users.Profile'
5. И тут вроде бы все. Пытаюсь мигрировать, но ничего не происходит. Начинаю запускать проект и полезли ошибки.
6. То ей пропиши файл с установками os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
7. То ей пропиши django.setup()
8. Сейчас следующая ошибка вылезла.
В примерах, которые я использовал ничего из этого не было, все было в порядке.
Есть идея, не создавать связанные модели, а просто в view.py прописать функцию, где будет добавляться уникальное имя пользователя, если он авторизован. Дальше проверять и наличие подписки и открывать доступ.
НО! Хотелось бы понять, что я делал не так и где затупил. Плюс может вы подскажите идею с подписочной моделью, которую я попробую в своем проекте.