I'm building a django web app and I'm having troubles in inserting news objects(musics) without using forms.
I will give an example of what I've so far:
here is my models.py:
from django.db import models
from django.contrib.auth.models import User
class Genre(models.Model):
genre=models.CharField(max_length=250)
def __str__(self):
return str(self.genre)
class Music(models.Model):
author=models.OneToOneField(User, on_delete=models.CASCADE)
genre=models.ForeignKey(Genre, on_delete=models.CASCADE)
title=models.CharField(max_length=100)
audio_file=models.FileField(upload_to='songs/')
cover=models.ImageField(upload_to='covers/')
and here is my views.py:
from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponse
from .models import *
def add_song(request):
if request.method=='post' or request.FILES:
genre=request.post['genre'] #getting the genre data from html template
title=request.post['title'] #getting the title from html template
audio_file=request.files['audio_file']
cover=request.files['cover']
instance=request.user
genre_selected=Genre.objects.get(genre=genre) #to get the genres already inserted in the db
music=Music.objects.create(author=instance, title=title, genre=genre_selected, audio_file=audio_file, cover=cover)
return redirect('/')
else:
return render(request, 'music.html')
And when I try to add new always I get this error:
Cannot assign "<Genre: Pop>": "Music.genre" must be a "Genre" instance.
Can you guys help me out?
question from:
https://stackoverflow.com/questions/65626702/how-to-create-a-objects-with-related-tables 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…