これは私が書いたDjangoモデルクラスです。私がget_object_or_404
をDjangoから呼び出すと、このクラスはkeyerrorを取得します(私は、get関数によって__init__
に渡されるkwargsのせいでkeyerrorが発生すると考えています。面白いことに、get_object_or_404
をコンソールから呼び出すとエラーにはなりません。keyerrorの中のdjangoモデルクラス__init__
私は、このコードを正しい方法(つまり、のを初期化するためにリンクフィールドを設定する)がこのクラスを構築するのに不思議です。
class Link(models.Model)
event_type = models.IntegerField(choices=EVENT_TYPES)
user = models.ForeignKey(User)
created_on = models.DateTimeField(auto_now_add = True)
link = models.CharField(max_length=30)
isActive = models.BooleanField(default=True)
def _generate_link(self):
prelink = str(self.user.id)+str(self.event_type)+str(self.created_on)
m = md5.new()
m.update(prelink)
return m.hexdigest()
def __init__(self, *args, **kwargs):
self.user = kwargs['user'].pop()
self.event_type = kwargs['event_type'].pop()
self.link = self._generate_link()
super(Link,self).__init__(*args,**kwargs)
答えを考慮すると、initを無効にすることは問題があるようです。私はあなたの提案に従ってクラスを再構成します。みなさん、ありがとう。 (私はまだ例外がスローされるかどうかは、コンソールまたはDjangoからどこに呼び出されるかによって決まります)。 – shanyu