繁体   English   中英

如何使用Django视图将特定用户实例保存到数据库中

[英]How save specific user instance into database using django views

我像明智地创建了称为Interview,Users,Interview_interviewer的模型。Interview_interviewer表具有来自其他模型的外键。 我只想将两个表中的数据保存到多对多表的Interview_interviewer(无Django表单)表中。 因此,我刚刚为其创建了视图和模板。 单击按钮时,将采访者保存在与采访一起的表格中。 但是,当执行此操作时,它给了我一个错误,提示“用户匹配查询不存在”。 hod_inter_interviewer_2中的/home/govinda/DMG/test3/myapp/views.py usr = User.objects.get(id = pid)我该怎么办?

类面试(models.Model):

Time = models.TimeField()
Date = models.DateField()
Venue = models.ForeignKey('Venue')
HOD = models.ForeignKey(User)
Vacancy = models.ForeignKey('Vacancy', on_delete=models.CASCADE)
Department = models.ForeignKey(Department, on_delete=models.CASCADE)
InterviewType = models.ForeignKey(InterviewType, on_delete=models.CASCADE)
Interviewer_Review = models.TextField(blank=True, null=True)
HOD_Review = models.TextField(blank=True, null=True)
HR_Review = models.TextField(blank=True, null=True)
NoOfPasses = models.PositiveIntegerField(blank=True, null=True)
NoOfFails = models.PositiveIntegerField(blank=True, null=True)
NoOfOnHolds = models.PositiveIntegerField(blank=True, null=True)
InterviewNo = models.IntegerField(blank=True, null=True)
Post = models.ForeignKey(Post, on_delete=models.CASCADE)

类Users(models.Model):

User = models.OneToOneField(User)
FullName = models.CharField(max_length=100)
Post = models.ForeignKey(Post)
UPhoto = models.FileField(upload_to=User_directory_path,null = True,blank=True)
Department = models.ForeignKey(Department)
UserRole = models.ForeignKey(UserRole)

def __str__(self):
    return u'{}'.format(self.User)

类Interview_Interviewer(models.Model):

Interview = models.ForeignKey(Interview)
Interviewer = models.ForeignKey(User)

def __str__(self):
    return u'{}'.format(self.Interviewer)

视图是...

def hod_pre_interviwer_list(request,iid):

inter = Interview.objects.get(id=iid)
a = UserRole.objects.get(Role="Interviewer")
viewer = Users.objects.filter(UserRole=a.id)
return render(request, 'hod_inter_create_2.html', {'viewer': viewer, 'inter': inter, 'a':a})

def hod_inter_interviewer_2(request,iid,pid):

inter = Interview.objects.get(id=iid)
usr = User.objects.get(id=pid)
a = UserRole.objects.get(Role="Interviewer")
viewer = Users.objects.filter(UserRole=a.id)
usr_id = Users.objects.get(User=a.id)
inter_id = inter
person_id = usr_id
form = Interview_Interviewer(Interview=inter_id, Interviewer=person_id)
form.save()
return render(request, 'hod_inter_create_2.html', {'viewer': viewer, 'inter': inter})

网址是...

urlpatterns = [

url(r'^hod/hod_vacancy/test/part2/inter_list/(\d+)/$', hod_pre_interviwer_list, name="inter1"),
url(r'^hod/hod_vacancy/test/part2/inter_list/(\d+)/(\d+)/$', hod_inter_interviewer_2, name="inter2"),

]

模板是...

    <a type="submit" class="btn btn-primary" href="/hod/hod_vacancy/test/part2/inter_list/{{ inter.id }}/{{ viewer.id }}">Add</a>

尝试在网址格式中使用命名组

urlurl(r'^hod/hod_vacancy/test/part2/inter_list/?P<iid>[0-9]+)/?P<pid>[0-9]+/$', hod_inter_interviewer_2, name="inter2"),

如果那不起作用,那么我建议像大多数文档示例一样尝试User.object.get(pk=pid)

并确保在URL中有一个具有该ID(iid)的用户。

您还应该使用get_object_or_404从视图中的模型获取任何单个对象,因为它会提供更用户友好和适当的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM