-17

トレースバック付きの更新されたコードは次のとおりです

モデルは次のとおりです。

class Base(models.Model):
    created_by = models.ForeignKey(User, related_name="(app_label)s_%(class)s_creator")
    edited_by = models.ForeignKey(User, related_name="(app_label)s_%(class)s_editor")
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)
     
    class Meta:
            abstract = True
 
class Department(Base):
    dept_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=60, unique=True)
    description = models.TextField()
 
    def __unicode__(self):
        return str(self.name)
 
 

エラー トレースバック:
ValueError トレースバック (最新の呼び出しが最後)
C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\core\management\commands\shell.pyc in () ---- > 1 テスト = Department.objects.create(name='test',description='test')

C:\python27\lib\site-packages\django-1.5-py2.7.egg\django\db\models\fields\__init__.pyc in get_prep_value(se
lf, value)
553 if value is None:
554 return None
--> 555 return int(value)
556
557 def contribute_to_class(self, cls, name):
 
ValueError: invalid literal for int() with base 10: '<property object at 0x000000000332AB38>'
4

1 に答える 1

1

user部門を作成するときは、を指定する必要があります。request.userビューにいるかのように現在のユーザーにアクセスできます

user = request.user 

または、シェルでテストしている場合は、データベースから任意のユーザーを取得します

user = User.objects.get(id=1) # get 

次に、次を作成しますdepartment

department = Department(name='test',
                        description='test',
                        user=user,
                        )

最後に、あなたdefault=User.pkは間違っています。ユーザー インスタンスの場合は にアクセスできますuser.pkが、class 属性User.pkは、ご想像のとおり、現在のユーザーの pk ではありません。

于 2013-05-13T08:35:24.220 に答える