我有以下三种模式:
#models.py
class Room(models.Model):
room_number = models.CharField(max_length=20, primary_key=True, null=False, blank=False)
isolation_status = models.BooleanField()
class Treatment(models.Model):
room_number = models.ForeignKey(Room, primary_key=True)
treated = models.BooleanField()
class Isolation(models.Model):
room_number = models.ForeignKey(Room, primary_key=True)当我创建一个新的处理对象时,我需要做的是将Room.isolation_status字段设置为False。
#views.py
class AddTxView(FormView):
template_name = 'addtx.html'
form_class = TxForm
success_url = '/rooms/addtx/'
def update_iso(self, form):
instance = Room.objects.get(room_number=room_number)
instance.isolation_status = False
def form_valid(self, form):
save_it = form.save(commit=False)
save_it.save()
return super(AddTxView, self).form_valid(form)
#forms.py
class TxForm(forms.ModelForm):
class Meta:
model = Treatment什么时候应该调用update_iso函数?在保存()之后?是否应该使用基于类的视图
发布于 2014-03-06 09:58:24
你可以把这个放在模型里。无论何时您保存治疗,检查它是否是新的。如果是,则将isolation_status的room_number设置为false。
#models.py
class Room(models.Model):
room_number = models.CharField(max_length=20, primary_key=True, null=False, blank=False)
isolation_status = models.BooleanField()
class Treatment(models.Model):
room_number = models.ForeignKey(Room, primary_key=True)
treated = models.BooleanField()
def save(self, *args, **kwargs):
is_new = False
if self.pk is None:
is_new = True
super(Treatment,self).save(*args, **kwargs)
if is_new:
self.room_number.isolation_status = False
self.room_number.save()
class Isolation(models.Model):
room_number = models.ForeignKey(Room, primary_key=True)通过这样做,每当您添加处理(无论是在视图中还是在管理中)时,它都会工作。
发布于 2014-03-06 09:01:21
在保存处理对象之前,您可以这样做:
form_obj = form.save(commit=False)
form_obj.room_number.isolation_status = False
form_obj.save()https://stackoverflow.com/questions/22219401
复制相似问题