Я создал проект одной модели django, затем добавил еще несколько моделей, затем я получил эту ошибку
RecursionError at /elements/
maximum recursion depth exceeded while calling a Python object
затем я переустановил некоторые пакеты, такие как djangorestframwork-recursion, затем я получил эту ошибку
Error at /
Incorrect padding
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.0.8
Exception Type: Error
Exception Value:
Incorrect padding
Exception Location: //anaconda3/lib/python3.7/base64.py in b64decode, line 87
Python Executable: //anaconda3/bin/python
Python Version: 3.7.3
Python Path:
['/Users/apple/Desktop/Trying to clone notionso note taking app with django '
'and reac1/backend/restapi',
'//anaconda3/lib/python37.zip',
'//anaconda3/lib/python3.7',
'//anaconda3/lib/python3.7/lib-dynload',
'/Users/apple/.local/lib/python3.7/site-packages',
'//anaconda3/lib/python3.7/site-packages',
'//anaconda3/lib/python3.7/site-packages/aeosa']
Server time: Fri, 7 Aug 2020 06:59:57 +0000
также, когда я запускал python manage.py makemigrations, я получил
You are trying to change the nullable field 'text' on components to non-nullable without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Ignore for now, and let me handle existing rows with NULL myself (e.g. because you added a RunPython or RunSQL operation to handle NULL values in a previous data migration)
3) Quit, and let me add a default in models.py
Select an option:
в чем проблема с nullable field 'text'
(также я меняю каждые null=Flase
на null=True
i получил такую же ошибку.
models.py
# this is a recursive model
from django.db import models
class elements(models.Model):
tag = models.CharField(blank=True, null=True, max_length=20)
text = models.TextField(blank=True, null=False)
src = models.URLField(blank=True, null=True)
# problem: styles replace spaces with slashes (/)
# I tried: json field but did'nt work.
style = models.TextField(blank=True, null=True)
main = models.ForeignKey(
'self', null=True, blank=True, related_name="sub", on_delete=models.PROTECT)
class styles(models.Model):
name = models.TextField(blank=True, null=True, max_length=50)
style = models.TextField(blank=True, null=True)
main = models.ForeignKey(
'self', null=True, blank=True, related_name="sub", on_delete=models.PROTECT)
class components(models.Model):
name = models.TextField(blank=True, null=True, max_length=50)
tag = models.CharField(blank=True, null=True, max_length=20)
text = models.TextField(blank=True, null=False)
src = models.URLField(blank=True, null=True)
style = models.TextField(blank=True, null=True)
main = models.ForeignKey(
'self', null=True, blank=True, related_name="sub", on_delete=models.PROTECT)
serialzers.py
from rest_framework import serializers
from models.models import elements, styles, components
from rest_framework_recursive.fields import RecursiveField
class elementsSerializer(serializers.ModelSerializer):
sub = RecursiveField(many=True, required=False)
class Meta:
model = elements
fields = ('id', 'tag', 'text', 'src', 'style', 'main', 'sub')
class stylesSerializer(serializers.ModelSerializer):
sub = RecursiveField(many=True, required=False)
class Meta:
model = styles
fields = ('id', 'name', 'style', 'main', 'sub')
class componentsSerializer(serializers.ModelSerializer):
sub = RecursiveField(many=True, required=False)
class Meta:
model = components
fields = ('id', 'name', 'tag', 'text', 'src', 'style', 'main', 'sub')
view.py
from models.models import elements, styles, components
from .serializers import elementsSerializer, stylesSerializer, componentsSerializer
from rest_framework import viewsets
class elementsVeiwSet(viewsets.ModelViewSet):
serializer_class = elementsSerializer
queryset = elements.objects.all()
class stylesVeiwSet(viewsets.ModelViewSet):
serializer_class = stylesSerializer
queryset = styles.objects.all()
class componentsVeiwSet(viewsets.ModelViewSet):
serializer_class = componentsSerializer
queryset = components.objects.all()
urls.py
from models.models import elements, styles, components
from .serializers import elementsSerializer, stylesSerializer, componentsSerializer
from rest_framework import viewsets
class elementsVeiwSet(viewsets.ModelViewSet):
serializer_class = elementsSerializer
queryset = elements.objects.all()
class stylesVeiwSet(viewsets.ModelViewSet):
serializer_class = stylesSerializer
queryset = styles.objects.all()
class componentsVeiwSet(viewsets.ModelViewSet):
serializer_class = componentsSerializer
queryset = components.objects.all()