Что не так с obj.NamAdd == NamAdd
?
Многие.
Основной проблемой для ошибки сравнения является то, что NamAdd
является целым числом (Teacher
идентификатор объекта), где obj.NamAdd
является объектом модели.
Итак, в связи с этим должно быть obj.NamAdd.id == NamAdd
Не делайте этого, пожалуйста. Не так. Вы обходите проверку ввода.
Это может быть obj.NamAdd == modForm.cleaned_data['NamAdd']
Так как вы хотите уникальный Moderation
,
добавить это к модели:
class Meta:
unique_together = (('year', 'semester', 'examtype', 'examyear', 'NamAdd', 'position'))
так что теперь это выглядит как
class Moderation(models.Model):
year = models.CharField(max_length=100, choices=[])
semester = models.CharField(max_length=100, choices=[])
examtype = models.CharField(max_length=30, choices=[])
examyear = models.CharField(max_length=30, choices=[])
NamAdd = models.ForeignKey(Teacher, on_delete=models.CASCADE)
position = models.CharField(max_length=100, choices=[])
def __str__(self):
return unicode(self.NamAdd)
class Meta:
unique_together = (('year', 'semester', 'examtype', 'examyear', 'NamAdd', 'position'))
(помните makemigrations и migrate )
** обратите внимание, я использовал пустой список для choices
, отрегулируйте для вашего случая.
теперь в представлении, используйте это для проверки существования модерации:
moderation_exists = Moderation.objects.filter(year=modForm.cleaned_data['year'], semester=modForm.cleaned_data['semester'],examtype=modForm.cleaned_data['examtype'], examyear=modForm.cleaned_data['examyear'], NamAdd=modForm.cleaned_data['NamAdd'], position=modForm.cleaned_data['position']).exists()
if moderation_exists:
context = {'fMod': fMod, 'modForm': modForm,
'msg': "<span style='color:red;'><h3>Already Inserted!</h3> Last entry : </span>"}
flag = False