У меня есть приложение, которое пользователи могут посещать, какие курсы они посещают, и между пользователями и курсом существует множество отношений. Теперь, когда пользователь хочет добавить курс, я хочу проверить, не добавили ли он один и тот же курс с частично одинаковым значением, например, с тем же кодом курса и годом. В настоящее время мой взгляд:
@login_required
def course_add(request):
if request.method == "POST":
form = CourseForm(request.POST or none)
if form.is_valid():
course = form.save(False)
for c in request.user.courses.all():
if course.course_code == c.course_code and course.course_year == c.course_year:
form = CourseForm
message = "It's seems you already have added this course please try again."
context = {
'form':form,
'message': message,
}
return render(request,'home/courses/course_add.html', context)
request.user.courses.add(course)
return redirect('home:courses')
else:
form = CourseForm
context = {
'form':form
}
return render(request,'home/courses/course_add.html', context)
в моей пользовательской модели у меня есть эта строка:
courses = models.ManyToManyField('home.Course',related_name='profiles')
моя модель курса:
class Course(models.Model):
course_code = models.CharField(max_length=20)
course_name = models.CharField(max_length=100)
course_year = models.IntegerField(('year'), validators=[MinValueValidator(1984), MaxValueValidator(max_value_current_year())])
def __str__(self):
return self.course_code
Как вы Я вижу, что я не хочу, чтобы пользователь мог добавлять курс, если у него есть код и год существует независимо от названия курса. Как я могу добиться этого, используя exists()
, если возможно