创建后分配外键值(登录用户)

时间:2019-04-29 08:08:50

标签: python django django-models django-views

我使用CBV有一个createview

from pydocumentdb import document_client

endpoint = "https://***.documents.azure.com:443/";
primaryKey = "***";

client = document_client.DocumentClient(endpoint, {'masterKey': primaryKey})

collection_link = "dbs/db/colls/coll"

query = "select c.id from c"

query_with_optional_parameters = [];

q = client.QueryDocuments(collection_link, query, {'maxItemCount': 2})
results_1 = q._fetch_function({'maxItemCount': 2})

print(results_1)
token = results_1[1]['x-ms-continuation']
results_2 = q._fetch_function({'maxItemCount': 2, 'continuation': token})

print(results_2)

各个型号。py

class StudentCreate(LoginRequiredMixin, CreateView):

    login_url = '/signin/'
    model = Student
    fields = ['first_name', 'last_name' ]
    success_url = '/dashboard/'

该Web应用程序具有登录功能。当用户(classteacher)登录时,他们可以添加学生。我想要的是Student(模型Form)中的classteacher字段应自动设置为user,即classteacher。 (Classteacher),并且在创建该学生之后应将其保存在数据库中。使用相应的必填字段更新了Classteacher模型。

2 个答案:

答案 0 :(得分:1)

here中查找可以覆盖的CreateView的各种方法。

在您的情况下,您想覆盖form_valid()方法,该方法将在保存新的Student时调用。

from django.shortcuts import get_object_or_404

def form_valid(self, form):
    self.object = form.save(commit=False)
    self.object.classteacher = get_object_or_404(Class_teacher, email=self.request.user.email)
    self.object.save()
    return super().form_valid(form)

答案 1 :(得分:1)

您需要定义自己的path: ""。 我认为教师与您的用户模型是一对一的关系。

form_valid()