1

コンストラクターを使用してジェネリックフィールドを割り当てた場合にジェネリックフィールドが固定されない、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}>
4

1 に答える 1

2

保存していないd(またはアイテムのいずれも) ためobject_id、ジェネリック リレーションのフィールドで使用できる ID がありません。に割り当てる前に、まず保存してaください。

于 2012-07-28T22:27:22.447 に答える