嗨,我在 django 中有一个项目,当我尝试运行服务器时,上面的消息显示这是 models.py fo
class Display(models.Model) :
url=models.URLField(unique=True)
text = models.CharField(max_length=150)
class Display_Data(models.Model) :
displays = models.ManyToManyField(Display)
user= models.ManyToManyField(User)
choosenum=models.IntegerField()
puplish_date =models.DateTimeField(default=datetime.now)
and this the view.py
tdef submit_operation(request):
if request.method == 'POST':
url = request.POST.get('url')
text = request.POST.get('title')
choosenum = request.POST.get('CHOOSE')
if Display.objects.filter(url=url).exists():
display = Display.objects.get(url=url)
display_data = Display_Data.objects.create(choosenum=choosenum, user=request.user, date_published=datetime.now())
display_data.displays.add(display)
else:
display = Display.objects.create(url=url, text=text)
display_data = Display_Data.objects.create(choosenum=choosenum, user=request.user, date_published=datetime.now())
display_data.displays.add(display) # ... (إعادة توجيه المستخدم)
#return redirect('searchpage')
return redirect(request.META.get('HTTP_REFERER'))ype herea
`当我尝试引用在 abeer 上面的消息之前保存的视频时
i make a site show video from youtube in a frame and asked a user to value the vidio i saved vidio url and when i want from user to again evluate the vidio the mistake apeer
您看到此错误的原因是 不仅
displays
而且 user
字段也具有多对多关系。
在保存 [Display_Data] 之前,您无法将 [Display_Data] 与 [用户] 关联。
因此,就像关联
displays
模型实例一样,您应该在创建并保存 user
模型实例后关联 display_data
实例。
您的模型.py:
class Display(models.Model) :
url=models.URLField(unique=True)
text = models.CharField(max_length=150)
class Display_Data(models.Model) :
displays = models.ManyToManyField(Display)
users = models.ManyToManyField(User)
choosenum = models.IntegerField()
puplish_date = models.DateTimeField(default=datetime.now)
由于 m2m 字段
displays
是复数,为了保持一致性,我也将 users
字段设为复数
您的观点.py:
def submit_operation(request):
if request.method == 'POST':
url = request.POST.get('url')
text = request.POST.get('title')
choosenum = request.POST.get('CHOOSE')
try:
choosenum = int(choosenum)
except e:
raise ValueError("couldn't convert choosenum into int")
# or you can handle the error in a way you like
if Display.objects.filter(url=url).exists():
display = Display.objects.get(url=url)
display_data = Display_Data.objects.create(choosenum=choosenum, date_published=datetime.now())
display_data.displays.add(display)
display_data.users.add(request.user)
else:
display = Display.objects.create(url=url, text=text)
display_data = Display_Data.objects.create(choosenum=choosenum, date_published=datetime.now())
display_data.displays.add(display) # ... (إعادة توجيه المستخدم)
display_data.users.add(request.user)
#return redirect('searchpage')
return redirect(request.META.get('HTTP_REFERER'))ype herea
在您的 models.py 上,您已将
choosenum
定义为整数字段:
choosenum = models.IntegerField()
但是
request.POST
中的所有数据都是字符串,所以你应该将其转换为整数:
choosenum = request.POST.get('CHOOSE')
try:
choosenum = int(choosenum)
except e:
raise ValueError("couldn't convert choosenum into int")
# or you can handle the error in a way you like