Python 无法分配"';数学'&引用;:&引用;主题分类主题“;必须是一个";“主题”;实例

Python 无法分配"';数学'&引用;:&引用;主题分类主题“;必须是一个";“主题”;实例,python,django,Python,Django,所以,我的django项目有一些问题。我m想将droplist中的Subject(由名为Subject的数据库组成)分配给另一个名为SubjectClas的数据库,但我一直收到这个错误。有什么建议吗?谢谢。 无法分配“'Math'”:“SubjectClas.subject”必须是“subject”实例 我的html代码 {% block add %} <form action="{% url 'marks:addsubject' class.id%}" method="POST">

所以,我的django项目有一些问题。我
m想将droplist中的Subject(由名为Subject的数据库组成)分配给另一个名为SubjectClas的数据库,但我一直收到这个错误。有什么建议吗?谢谢。
无法分配“'Math'”:“SubjectClas.subject”必须是“subject”实例

我的html代码

{% block add %}
<form action="{% url 'marks:addsubject' class.id%}" method="POST">
            {% csrf_token %}
            <select required name="sub">
                {% for d in subjectslist %}
                  <option value='{{d.id}}'>{{d.SubjectName}}</option>
                {% endfor %}
            </select>
            <button type="submit">готово</button>
</form>
{% endblock %}

我的观点

def addsubject(request, classid):
    try:
        a = Class.objects.get( id = classid )
    except:
        raise Http404("Http404")
    SubjectClas.objects.create(subject = request.POST['sub'], clas = a)


谢谢。

subject
subject
模型的
外键
,因此通过传递字符串,这将不起作用

但是,您可以创建或获取
主题
对象,例如:

从django.shortcuts导入重定向
从django.views.decorators.http导入需要\u http\u方法
@需要\u http\u方法(['POST'])
def addsubject(请求,classid):
主题,主题,对象,获取或创建(name=request.POST['sub'])
SubjectClas.objects.create(subject=subject\u id,clas\u id=classid)

return redirect('name-of-some-view')
subject
是指向
subject
模型的
外键,因此通过传递一个字符串,这将不起作用

但是,您可以创建或获取
主题
对象,例如:

从django.shortcuts导入重定向
从django.views.decorators.http导入需要\u http\u方法
@需要\u http\u方法(['POST'])
def addsubject(请求,classid):
主题,主题,对象,获取或创建(name=request.POST['sub'])
SubjectClas.objects.create(subject=subject\u id,clas\u id=classid)

return redirect('name-of-some-view')
subject
是指向
subject
模型的
外键
,因此通过传递字符串,将无法工作。
subject
是指向
subject
模型的
外键
,因此通过传递字符串,将无法工作。
def addsubject(request, classid):
    try:
        a = Class.objects.get( id = classid )
    except:
        raise Http404("Http404")
    SubjectClas.objects.create(subject = request.POST['sub'], clas = a)

from django.shortcuts import redirect
from django.views.decorators.http import require_http_methods

@require_http_methods(['POST'])
def addsubject(request, classid):
    subject, __ = Subject.objects.get_or_create(name=request.POST['sub'])
    SubjectClas.objects.create(subject=subject_id, clas_id=classid)
    return redirect('name-of-some-view')