I’m sorry if question title is confusing or not clear but i didn’t have a better way of writting it.
I have a django app root
, in models.py
i created a model Post
containing 3 manytomany fields ; File
, Video
and Picture
and some other fields and while trying to populate the model in Django Admin or even to view any of the created Posts i get this error message django.db.utils.OperationalError: no such table: root_post_Picture
. I already ran python manage.py sqlmigrate root 0001_initial
and saw no table with such name and it’s not surprising since root_post_Picture
corresponds to none of my models . I think it is related to the manaytomanyfields i created since the name root_post_Picture
seems to be a combination of the tables root_post
and root_picture
from my database.
views.py
def postcreation(request):
Videoarray=[]
Picturearray=[]
Filearray=[]
form=AbsolutePostForm(request.GET)
file = Fileform(request.FILES)
pic = PictureForm(request.FILES)
vid = VideoForm(request.FILES)
if request.method=="POST":
file = Fileform(request.FILES)
if "File" in request.POST:
if file.is_valid():
File=Files(Post_type="posts",Post_id=get_id_generation("postids.txt"),File=request.FILES["File"])
File.save()
Filearray.append(File)
print("file")
return HttpResponse("file")
pic = PictureForm(request.FILES)
if "Picture" in request.FILES:
if pic.is_valid():
Picture = Pictures(Post_type="posts", Post_id=get_id_generation("postids.txt"),Picture=request.FILES["Picture"])
Picture.save()
Picturearray.append(Picture)
print("pic")
return HttpResponse("picture")
vid = VideoForm(request.FILES)
if "Video" in request.FILES:
if vid.is_valid():
Video = Videos(Post_type="posts", Post_id=get_id_generation("postids.txt"),Video=request.FILES["Video"])
Video.save()
print("vid")
Videoarray.append(Video)
if "Postcoment" in request.POST:
form = AbsolutePostForm(request.POST)
if form.is_valid():
post=form.cleaned_data["Postcoment"]
Main=Post(post=post)
Main.save()
for obj in Filearray:
Main.File.add(obj)
for obj in Videoarray:
Main.File.add(obj)
for obj in Picturearray:
Main.File.add(obj)
return HttpResponse("welldone")
context={"form":form,"pic": pic,"file":file,"vid":vid}
return render(request,"postcreationpage.html",context)
models.py
class Pictures(models.Model):
Post_id=models.IntegerField()
Post_type=models.CharField(max_length=15)
Picture = models.ImageField(upload_to="images/posts")
class Files(models.Model):
Post_id = models.IntegerField()
Post_type = models.CharField(max_length=15)
File = models.FileField(upload_to="documents/posts",validators=[documentvalidator])
class Videos(models.Model):
Post_id = models.IntegerField()
Post_type = models.CharField(max_length=15)
Video = models.FileField(upload_to="videos/posts",validators=[videovalidator])
class Post(models.Model):
post = models.CharField(max_length=900)
Date = models.DateTimeField(default=django.utils.timezone.now)
Picture=models.ManyToManyField(Pictures, blank=True)
File = models.ManyToManyField(Files, blank=True)
Video = models.ManyToManyField(Videos, blank=True)
likes=models.IntegerField(default=0)
dislikes = models.IntegerField(default=0)
coments = models.IntegerField(default=0)
in template
<div class="panel">
<div class="seperate">
<div class="attachements">
<div style="position: relative;">
<div style="width:40px;
height: 35px; ">
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ pic }}
<button type="submit" class="submiters">sauvegarder l'image choisie</button>
</form>
</div>
<img src="{% static 'im.png' %}" class="pinner">
</div>
<div style="position: relative;">
<div style="
width:40px;
height: 35px; ">
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ vid }}
<button type="submit" class="submiters" style="top: 100px;">sauvegarder la video choisie</button>
</form>
</div>
<img src="{% static 'vid.png' %}" class="pinner">
</div>
<div style="position: relative;">
<div style="
width:40px;
height: 35px; ">
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ file }}
<button type="submit" class="submiters" style="top: 150px;">sauvegarder le document choisi</button>
</form>
</div>
<img src="{% static 'doc.png' %}" class="pinner">
</div>
</div>
<div>
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<br>
<br>
<button type="submit">POSTER</button>
</form>
</div>
</div>
forms.py
class AbsolutePostForm(forms.Form):
Postcoment=forms.CharField(label="",required=False,max_length=700, widget=(forms.Textarea(attrs={"required": "True",'rows':"30", 'cols':"60", 'class':"postgrid", 'placeholder':"DECRIVEZ VOTRE POSTE"})))
class Fileform(forms.Form):
File = forms.FileField(label="",required=False,widget=(forms.FileInput(attrs={"class":"invisible"})), validators=[documentvalidator])
class PictureForm(forms.Form):
Picture = forms.ImageField(label="",required=False,widget=(forms.FileInput(attrs={"class":"invisible"})))
class VideoForm(forms.Form):
Video = forms.FileField(label="",required=False,widget=(forms.FileInput(attrs={"class":"invisible"})),validators=[videovalidator])
2