在具有多个外键Djang的模型中创建记录

2024-06-28 11:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个有多个外键字段的模型

class Designations(models.Model):
    designation_id = models.AutoField(primary_key=True)
    curriculum = models.ForeignKey(Curricula, on_delete=models.CASCADE)
    role = models.ForeignKey(Roles, on_delete=models.CASCADE)
    staff = models.ForeignKey(Staffs, on_delete=models.CASCADE)

    class Meta:
        db_table = "arc_designations"
        unique_together = ('curriculum', 'role', 'staff')
        verbose_name_plural = "Designations"
        ordering = ['designation_id']

    def __str__(self):
        return '%s of %s %s (%s)' % (self.role.role_name,
                                     self.curriculum.course_period.course.course_abbreviation,
                                     self.curriculum.module_period.module.module_abbreviation,
                                     self.staff.staff_full_name)

我想在这个模型中创建一个记录,那么如何在函数视图中创建记录呢

**编辑我试过这个功能,但没有用

^{pr2}$

Tags: name模型selfonmodelsdeletecurriculumclass
2条回答

首先,最好将模型命名为名称,因为在Meta中已经有{}。在

这是如何添加新的指定记录。在

views.py

from my_app.models import Designation

def my_view(request):

    # do some stuff

    designation = Designation.objects.create(
        curriculum = <your_curriculum>,
        role = <your_role>,
        staff = <your_staff>
    )

    # do some other stuff

试试这个:

@require_POST
def setInstructor(request):
    staff = Staffs.objects.get(admission_number='16259')
    role = Roles.objects.first()
    curriculum = Curricula.objects.first()
    if not role or not curriculum:
        from django.shortcuts import Http404
        raise Http404('role or curriculum not found')
    Designations(staff=staff, role=role, curriculum=curriculum).save()
    return redirect('index')

相关问题 更多 >