django: got an unexpected keyword argument while accessing ForeignKey _id-Field in Manager -
i have model looks this:
class mentorship (models.model): mentor = models.foreignkey(settings.auth_user_model, related_name='mentor_user_id') mentee = models.foreignkey(settings.auth_user_model, related_name='mentee_user_id') objects = mentorshipmanager() def clean(self): print(self.mentor_id) # set , printed stdout print(self.mentee_id) # set , printed stdout if mentorship.objects.is_mentor(self.mentor_id, self.mentee_id): raise validationerror(_('this user mentor.')) the manager has function check if mentor of user, called while clean()ing instance:
def is_mentor_for_goal(self, mentor_id, mentee_id, personal_goal_id): if self.exists(mentor_id=mentor_id, mentee_id=mentee_id): return true else: return false however exception while accessing mentor_id or mentee_id attribute in exists:
django version: 1.6.1 exception type: typeerror exception value: exists() got unexpected keyword argument 'mentor_id' is there reason why cannot access _id field within manager? don't understand why field accessible in (unsaved) instance, not in manager.
a few things mentor__id work in queryset methods, not things print. should use pk instead of id, here how work:
class mentorship(models.model): mentor = models.foreignkey(settings.auth_user_model, related_name='mentor_user_id') mentee = models.foreignkey(settings.auth_user_model, related_name='mentee_user_id') objects = mentorshipmanager() def clean(self): print(self.mentor.pk) # set , printed stdout print(self.mentee.pk) # set , printed stdout if mentorship.objects.filter(mentor=self.mentor).exists(): raise validationerror(_('this user mentor.')) def is_mentor_for_goal(self, mentor_id, mentee_id, personal_goal_id): return self.exists(mentor__pk=mentor_id, mentee__pk=mentee_id)
Comments
Post a Comment