调用Python对象时,超过了/form/movie/最大递归深度处的递归错误
我不太清楚在django有多少油田在工作。因此,我这里有一个配置文件模型,在名称字段中,我想添加我将从登录凭据中获得的用户名,电影将从使用电影模型创建的表单中添加。我想了解这里的views.py文件有什么问题。谢谢 my models.py文件:调用Python对象时,超过了/form/movie/最大递归深度处的递归错误,python,django,orm,django-forms,manytomanyfield,Python,Django,Orm,Django Forms,Manytomanyfield,我不太清楚在django有多少油田在工作。因此,我这里有一个配置文件模型,在名称字段中,我想添加我将从登录凭据中获得的用户名,电影将从使用电影模型创建的表单中添加。我想了解这里的views.py文件有什么问题。谢谢 my models.py文件: from django.db import models from django.contrib.auth.models import User # Create your models here. class Article(models.Mod
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length = 200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
likes = models.IntegerField(default = 0)
def __str__(self):
return self.title
class Comment(models.Model):
name = models.CharField(max_length = 200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
article = models.ForeignKey(Article, on_delete=models.CASCADE)
class Language(models.Model):
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
class Framework(models.Model):
name = models.CharField(max_length = 20)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
def __str__(self):
return self.name
class Movie(models.Model):
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
class Character(models.Model):
name = models.CharField(max_length = 20)
movies = models.ManyToManyField(Movie)
def __str__(self):
return self.name
class profile(models.Model):
name = models.ForeignKey(User,on_delete=models.CASCADE, related_name="name")
# name = models.CharField(max_length = 20)
movies = models.ManyToManyField(Movie)
def __str__(self):
return self.movies
from django import forms
from . models import Article, Comment, Movie, Character
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = [
'title',
'body',
'pub_date'
]
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = [
'name',
'body'
]
from django.shortcuts import render
from django.contrib.auth.models import User
from .models import Movie, Character, profile
from .forms import MovieForm, CharacterForm
# Create your views here.
def characterset(request):
# form = CharacterForm(request.POST or None)
# if form.is_valid():
# form.save()
# form = CharacterForm()
form2 = MovieForm(request.POST or None)
if form2.is_valid():
form2.save()
form2 = MovieForm()
context = {
'form2' : form2
}
return render(request, "manytomany/form2.html", context)
def movieset(request):
current = request.user.username
print(current)
modelname = User.objects.get(username=current)
print(modelname)
a = profile(name=modelname)
print(a)
form = MovieForm(request.POST or None)
if form.is_valid():
f = form.save()
a.movies.add(f)
a.save()
# form2 = MovieForm(request.POST or None)
# if form2.is_valid():
# form2.save()
# form2 = MovieForm()
context = {
'form' : form
}
return render(request, "manytomany/form.html", context)
def show(request, id):
a = Movie.objects.get(id = id)
c = Character.objects.get(id = id)
c.movies.add(a)
return render(request, "manytomany/show.html")
my forms.py文件:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length = 200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
likes = models.IntegerField(default = 0)
def __str__(self):
return self.title
class Comment(models.Model):
name = models.CharField(max_length = 200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
article = models.ForeignKey(Article, on_delete=models.CASCADE)
class Language(models.Model):
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
class Framework(models.Model):
name = models.CharField(max_length = 20)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
def __str__(self):
return self.name
class Movie(models.Model):
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
class Character(models.Model):
name = models.CharField(max_length = 20)
movies = models.ManyToManyField(Movie)
def __str__(self):
return self.name
class profile(models.Model):
name = models.ForeignKey(User,on_delete=models.CASCADE, related_name="name")
# name = models.CharField(max_length = 20)
movies = models.ManyToManyField(Movie)
def __str__(self):
return self.movies
from django import forms
from . models import Article, Comment, Movie, Character
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = [
'title',
'body',
'pub_date'
]
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = [
'name',
'body'
]
from django.shortcuts import render
from django.contrib.auth.models import User
from .models import Movie, Character, profile
from .forms import MovieForm, CharacterForm
# Create your views here.
def characterset(request):
# form = CharacterForm(request.POST or None)
# if form.is_valid():
# form.save()
# form = CharacterForm()
form2 = MovieForm(request.POST or None)
if form2.is_valid():
form2.save()
form2 = MovieForm()
context = {
'form2' : form2
}
return render(request, "manytomany/form2.html", context)
def movieset(request):
current = request.user.username
print(current)
modelname = User.objects.get(username=current)
print(modelname)
a = profile(name=modelname)
print(a)
form = MovieForm(request.POST or None)
if form.is_valid():
f = form.save()
a.movies.add(f)
a.save()
# form2 = MovieForm(request.POST or None)
# if form2.is_valid():
# form2.save()
# form2 = MovieForm()
context = {
'form' : form
}
return render(request, "manytomany/form.html", context)
def show(request, id):
a = Movie.objects.get(id = id)
c = Character.objects.get(id = id)
c.movies.add(a)
return render(request, "manytomany/show.html")
类电影格式(forms.ModelForm):
类CharacterForm(forms.ModelForm):
my views.py文件:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length = 200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
likes = models.IntegerField(default = 0)
def __str__(self):
return self.title
class Comment(models.Model):
name = models.CharField(max_length = 200)
body = models.TextField()
pub_date = models.DateTimeField('date published')
article = models.ForeignKey(Article, on_delete=models.CASCADE)
class Language(models.Model):
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
class Framework(models.Model):
name = models.CharField(max_length = 20)
language = models.ForeignKey(Language, on_delete=models.CASCADE)
def __str__(self):
return self.name
class Movie(models.Model):
name = models.CharField(max_length = 20)
def __str__(self):
return self.name
class Character(models.Model):
name = models.CharField(max_length = 20)
movies = models.ManyToManyField(Movie)
def __str__(self):
return self.name
class profile(models.Model):
name = models.ForeignKey(User,on_delete=models.CASCADE, related_name="name")
# name = models.CharField(max_length = 20)
movies = models.ManyToManyField(Movie)
def __str__(self):
return self.movies
from django import forms
from . models import Article, Comment, Movie, Character
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = [
'title',
'body',
'pub_date'
]
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = [
'name',
'body'
]
from django.shortcuts import render
from django.contrib.auth.models import User
from .models import Movie, Character, profile
from .forms import MovieForm, CharacterForm
# Create your views here.
def characterset(request):
# form = CharacterForm(request.POST or None)
# if form.is_valid():
# form.save()
# form = CharacterForm()
form2 = MovieForm(request.POST or None)
if form2.is_valid():
form2.save()
form2 = MovieForm()
context = {
'form2' : form2
}
return render(request, "manytomany/form2.html", context)
def movieset(request):
current = request.user.username
print(current)
modelname = User.objects.get(username=current)
print(modelname)
a = profile(name=modelname)
print(a)
form = MovieForm(request.POST or None)
if form.is_valid():
f = form.save()
a.movies.add(f)
a.save()
# form2 = MovieForm(request.POST or None)
# if form2.is_valid():
# form2.save()
# form2 = MovieForm()
context = {
'form' : form
}
return render(request, "manytomany/form.html", context)
def show(request, id):
a = Movie.objects.get(id = id)
c = Character.objects.get(id = id)
c.movies.add(a)
return render(request, "manytomany/show.html")
查看带有错误的Django页面。它引用了
return self.movies
这是由于您为该特定模型建立的关系
所以发生的是这样的:
个人资料->电影->多对多->个人资料
看到这里发生了什么吗?你在兜圈子,通过“循环引用”打破了Django。您可以做的是删除不符合要求的行:
class profile:
...
__str__(self):
return self.name # or something like it
欢迎来到stack overflow!请考虑阅读并考虑编辑你的问题。