以这些模型为例:
class Restaurant(models.Model):
name = models.CharField()
# other fields here ...
class State(models.Model):
pass
class StateOpen(State):
def toggle_open_closed():
pass
class StateClosed(State):
def toggle_open_closed():
pass现在,我如何让我的餐厅有一个状态,这个状态可以是StateOpen或StateClosed?
编辑:理想情况下,我希望能够这样做:
r = Restaurant(name='whatever')
r.state.doSomething()
# doSomething() being a function that each state child class has,
# but implemented differently发布于 2013-12-08 05:29:07
不要为状态创建模型如果状态只能是两个'open‘和'closed',你可以在Restaurant模型中创建状态字段:
class Restaurant(models.Model):
name = models.CharField()
state = models.BooleanField(default=False)
def toggle_open_closed(self):
self.state = not self.state
self.save()您还可以在模型中使用预定义的状态和IntegerField列表定义状态:
RESTARAUNT_STATE = (
(0, 'Open'),
(1, 'Closed'),
(2, 'Didnt decided yet, come here later!'),
# you can define more states later
)
class Restaurant(models.Model):
name = models.CharField()
state = models.IntegerField(choices=RESTARAUNT_STATE)class State(models.Model):
name_of_state = models.CharField()
class Restaurant(models.Model):
name = models.CharField()
state = models.ForeignKey(State)
def toggle_state(self):
self.state = State.objects.get(...)
self.save()https://stackoverflow.com/questions/20446850
复制相似问题