我似乎无法使用Django设置实例变量。无法为使用Django的对象设置实例变量
我希望发生的是:
a,b = User(), User()
a.set_status('abc')
b.set_status('def')
b.get_status()
>>> 'def'
a.get_status()
>>> 'abc'
不幸的是,不断发生的事情是:
a,b = User(), User()
a.set_status('abc')
b.set_status('def')
b.get_status()
>>> 'def'
a.get_status()
>>> 'def'
我相信这是因为status
变量是一个类变量而不是一个实例变量。我如何使代码像我想要的那样行事?我的模特儿在下面。
class Status(models.Model):
def __init__(self, status = '', time=datetime.datetime.min, *args, **kwargs):
self.status = status
self.status_time = time
super(Status, self).__init__(*args, **kwargs)
def set_status(self, s):
self.status = s
self.status_time = datetime.datetime.now()
self.save()
def get_status(self):
now = datetime.datetime.now()
if now-self.status_time<datetime.timedelta(minutes=15):
return self.status
return None
class User(models.Model):
facebook_id = models.CharField(max_length=200)
friends = ListField()
status = Status()
@classmethod
def create_user(cls, fid, friends):
k = User()
k.facebook_id = fid
k.friends = friends
k.status = Status()
k.status.save()
k.save()
def login(self, facebook_friends):
self.friends = facebook_friends
self.save()
def set_status(self, status):
self.status.set_status(status)
#return matching statuses
def get_status(self):
return self.status.get_status()
嗯,你有没有阅读过文档,或者按照模型及其关系上的教程?我从来没有见过像这样实现的模型... – Ngenator
@Ngenator是正确的。在您的用户模型中,您应该通过'status = models.ForeignKey(Status)'来更改'status = Status()'。不是这样? – danihp