1👍
✅
What you are trying to do is to invoke an instance method without an instance.
It seems to be that what you want it’s a classmethod
So for your code to work you have either make an instance first or create add_question_history
as a classmethod.
Making an instance:
class QuestionHistory(models.Model):
question = models.ForeignKey(Question, blank=True, null=True)
user = models.OneToOneField('auth.User')
created_at = models.DateTimeField(auto_now=True, auto_now_add=False)
def __unicode__(self):
return unicode(self.question)
def add_question_history(self, user, question):
qs = self.objects.create(
question = question,
user = user
)
qs.save()
#more stuff
QuestionHistory().add_question_history(request.user, questionID)
Making a classmethod:
class QuestionHistory(models.Model):
question = models.ForeignKey(Question, blank=True, null=True)
user = models.OneToOneField('auth.User')
created_at = models.DateTimeField(auto_now=True, auto_now_add=False)
def __unicode__(self):
return unicode(self.question)
@classmethod
def add_question_history(cls, user, question):
qs = cls.objects.create(
question = question,
user = user
)
qs.save()
#stuff
QuestionHistory.add_question_history(user,question)
For better understanding read this
Source:stackexchange.com