コンストラクターを使用してジェネリックフィールドを割り当てた場合にジェネリックフィールドが固定されない、Djangoジェネリック外部キーに奇妙な問題があります。それは建設後にのみ固執します。これに関する情報が見つからないので、これについて新しい質問を作成しています。なぜこれが起こっているのか考えはありますか?
以下は私のクラスです
class Answer(models.Model):
question = models.OneToOneField(Question)
date = models.DateField()
# Generic relation to contain heterogeneous data of class *Data
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
answer_data = generic.GenericForeignKey('content_type', 'object_id')
def __unicode__(self):
question = ""
if hasattr(self, 'question'):
question = self.question.__unicode__()
else:
question = "Question undefined"
answer = ""
if hasattr(self, 'answer_data'):
answer = self.answer_data.__unicode__()
else:
answer = "Answer undefined"
return "Question: {" + question + "}; Answer: {" + answer + "}"
これが問題を示す私のシェルセッションです:
>>> from nequals1.models import *
>>> import datetime
>>> q = Question(text="Is this a question?")
>>> d = CharData(data="Yes, this is a question")
>>> a = Answer(question=q, date = datetime.datetime.now(), answer_data=d)
>>> a
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Python/2.7/site-packages/django/db/models/base.py", line 373, in __repr__
u = unicode(self)
File "/Users/kheck/PycharmProjects/neq1/nequals1/models.py", line 30, in __unicode__
answer = self.answer_data.__unicode__()
AttributeError: 'NoneType' object has no attribute '__unicode__'
>>> a.answer_data=d
>>> a
<Answer: Question: {Is this a question?}; Answer: {Yes, this is a question}>