如何将foreignkey字段更改回null?

时间:2017-03-23 18:08:07

标签: python django database

Django很新。我正在尝试将ForeignKey字段student_information.project切换回空值。同样,我的student_remove对象似乎没有正确定义,因为'Remove'应该是一个对象。

错误代码

AttributeError at /project_list/projects/1/

type object 'Student_Information' has no attribute 'student_remove'

Request Method:     GET
Request URL:    http://127.0.0.1:8000/project_list/projects/1/?Remove=sathya
Django Version:     1.10.5
Exception Type:     AttributeError
Exception Value:    

type object 'Student_Information' has no attribute 'student_remove'

Exception Location: /media/rms/Sathya's Dr/mysite/projects/views.py in post_detail, line 27
Python Executable:  /usr/bin/python
Python Version:     2.7.12

我的views.py

def post_detail(request, pk):
post = get_object_or_404(Project, pk=pk)
students = Student_Information.objects.filter(project=post)
if request.GET.get('Remove'):
    Remove = request.GET.get('Remove')      
    obj = Student_Information.objects.get(RCSID=Remove)
    #obj.project = None
return render(request, 'projects/post_detail.html', {'post': post, 'students': students})

obj = Student_Information.objects.get(RCSID=Remove)

投掷一个,应该指定RCSID是一个外键,看起来它正试图找到'sathya'的主键,它应该只是得到一个字符串。如何使其与字符串匹配?好像RCSID是自动RCSID_id。

invalid literal for int() with base 10: 'sathya'

2 个答案:

答案 0 :(得分:1)

错误信息非常清楚。 Student_Information模型没有任何名为student_remove的字段。

除此之外,你的代码还有很多问题。

  • 在Django中,您不会更新Model类。您更新Model类的实例。记录保存为Model类的实例。所以行Student_Information.student_remove.project = "---------"需要修复。
  • 只需调用student_information.project即可将
  • student_information.project = None设置为null。但此处student_informationStudent_Information模型的实例。
  • filter返回Queryset,而非实例。
  • 您需要在Model实例上调用save以在数据库中更新它。

我建议你通过官方polls app tutorial

答案 1 :(得分:0)

我通过传递id而不是RCSID使它们匹配。轻松修复。