Как использовать update_fields в сигналах django post_save - PullRequest
2 голосов
/ 31 октября 2019

Я надеюсь, что моего названия достаточно, чтобы понять, что я пытаюсь сказать, если нет, то извините заранее.

У меня нет проблем при вставке данных, но как насчет того, когда администратор обновил раздел студента? студент уже записал ?, я просто хочу обновить текущие данные, не добавляя другие данные

это мой код в моем model.py (post_save) ..

@receiver(post_save, sender=StudentsEnrollmentRecord)
def create(sender, instance, created, **kwargs):
    teachers = SubjectSectionTeacher.objects.filter(Courses=instance.Courses, Sections=instance.Section)
    if created and teachers.exists():
        StudentsEnrolledSubject.objects.create(
            # This should be the instance not instance.Student_Users
            Students_Enrollment_Records=instance,
            # The below is also not an instance of SubjectSectionTeacher
            Subject_Section_Teacher=teachers.first())

1 Ответ

0 голосов
/ 31 октября 2019

У вашего кода другие проблемы (почему вы используете CamelCase для атрибутов?), Но в Django, если вы хотите условно создать новый объект, вы можете использовать update_or_create(),Пример:

StudentsEnrolledSubject.objects.update_or_create(
        pk=instance.pk, defaults={"enrollment_credits": enrollment_credits}
)

Это создаст новый объект StudentsEnrolledSubject, если instance.pk не существует в базе данных. В противном случае он обновит существующий экземпляр enrollment_credits.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...