嗨,我有一个在django的项目,当我try 运行服务器时,上面的消息显示这是models.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)  
    user= models.ManyToManyField(User)
    choosenum=models.IntegerField()
    puplish_date =models.DateTimeField(default=datetime.now)

这是views.py:

def 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

当我试着参考vidion保存在消息之前.

我做了一个网站显示视频从youtube在一个框架,并要求用户重视视频我保存的视频URL,当我想从用户再次evulate视频错误apeer

推荐答案

你看到这个错误的原因是, 不仅displays,而且user字段也具有多对多的关系.

在保存[Display_Data]之前,不能将[Display_Data]与[用户]相关联.

100

因此,就像您关联displays个模型实例一样,您应该在创建并保存display_data个模型实例之后关联user个实例.

您的models.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) 

since m2m field 100 is plural, I made 101 field plural as well for consistency

您的views.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

Python相关问答推荐

如何在Deliveryter笔记本中从同步上下文正确地安排和等待Delivercio代码中的结果?

仿制药的类型铸造

如何标记Spacy中不包含特定符号的单词?

更改键盘按钮进入'

对象的`__call__`方法的setattr在Python中不起作用'

优化器的运行顺序影响PyTorch中的预测

当我try 在django中更新模型时,模型表单数据不可见

实现神经网络代码时的TypeError

Python列表不会在条件while循环中正确随机化'

通过ManyToMany字段与Through在Django Admin中过滤

Tkinter菜单自发添加额外项目

* 动态地 * 修饰Python中的递归函数

如何防止Pandas将索引标为周期?

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

如何合并具有相同元素的 torch 矩阵的行?

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

按条件添加小计列

Polars定制函数返回多列

文本溢出了Kivy的视区