【发布时间】:2019-12-29 01:55:27
【问题描述】:
我创建了一个维护应用程序,允许用户创建和查看维护详细信息。我有一个页面“maintenance-details.html”,其中显示了特定维护的所有详细信息。
这是我的 views.py:
class MaintenanceDetailView(DetailView):
template_name = 'maintenance/maintenance-details.html'
model = Maintenance
def get_context_data(self, **kwargs):
contacts_suppliers = ContactsSupplier.objects.filter(supplier__maintenance=self.object)
hora_atual = datetime.datetime.now()
context = super().get_context_data(**kwargs)
context['contacts_supplier'] = contacts_suppliers
context['hora_atual'] = hora_atual
return context
我在模板上创建了一个名为“标记为完成”的按钮。我的维护模型有一个布尔字段“完成”,目的是将任务设置为完成与否。我正在寻找的是更新模型并在用户单击它时将“完成”设置为“真”的最佳方法。
我的 models.py 在这里:
class Maintenance(models.Model):
category = models.ForeignKey(SuppliersCategory, models.DO_NOTHING, db_column='Category') # Field name made lowercase.
property = models.ForeignKey(Property, models.DO_NOTHING, db_column='Property_Reference') # Field name made lowercase.
name = models.CharField(db_column='Name', max_length=25) # Field name made lowercase.
created_date = models.DateTimeField(db_column='Date', auto_now_add=True) # Field name made lowercase.
staffmember = models.CharField(db_column='StaffMember', max_length=25, blank=True, null=True) # Field name made lowercase.
supplier = models.ForeignKey(Suppliers, db_column='Supplier') # Field name made lowercase.
description = models.CharField(db_column='Description', max_length=500, blank=True, null=True) # Field name made lowercase.
photo = models.ImageField(upload_to='maintenace/', db_column='Photo', blank=True, null=True) # Field name made lowercase.
expirydate = models.DateTimeField(db_column='ExpiryDate', blank=False) # Field name made lowercase.
datecompletion = models.DateTimeField(db_column='DateCompletion', blank=True, null=True) # Field name made lowercase.
done = models.BooleanField(db_column='Done', default=False) # Field name made lowercase.
class Meta:
db_table = 'Maintenance'
def get_absolute_url(self):
return reverse("maintenance:maintenance_detail",kwargs={'pk':self.pk})
def set_done(self):
self.done = True
self.datecompletion = timezone.now()
self.save()
这样做的正确方法是什么?
【问题讨论】:
标签: python django django-models django-templates django-class-based-views