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

时间:2016-07-05 14:45:06

标签: python django django-models 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)

class 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>

1 个答案:

答案 0 :(得分:1)

尝试在网址模式中使用named groups

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)

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

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