python - 跨应用更新模型字段时,消息对象没有属性“字段”
问题描述
我有两个应用程序menu
和table
. 在 apptable
中,我有这个模型:
class Table(models.Model):
available = models.BooleanField(verbose_name="Availability", default=True)
def set_availability(self, avail=False):
self.fields['available'] = avail
self.save()
def __str__(self):
return "Table " + str(self.id_num)
在 app 的一个视图中menu
,我有以下调用:
from table.models import Table
def menu_category_view(request, table_pk):
table = Table.objects.get(pk=table_pk)
if table.available:
table.set_availability(False)
...
return render(request,
...)
当我的模板调用此视图时,我收到此错误消息'Table' object has no attribute 'fields'
。在这里,我试图更新available
被调用实例的字段值(从 True 到 False)。我从一本书中得到了这个实现的建议。这是更新模型实例字段值的正确方法吗?谢谢。
解决方案
只需设置属性。
def set_availability(self, avail=False):
self.available = avail
self.save()
不过,这样的set_<field>
方法是否特别有用是值得怀疑的。您几乎可以轻松地使用该对象:
if table.available:
table.available = False
table.save()
推荐阅读
- ios - 为什么我在运行 Pod install 时会收到此错误“[!] An error occurred while processing the post-install hook of the Podfile.”
- javascript - 为什么 foo 函数内外的参数值不同
- javascript - 从孩子那里获取信息给父母
- laravel - 如何重定向到分页中的“帖子”
- python - Python Pandas 嵌套 JSON
- r - 如何从 glmnet 多项式中恢复非零系数?
- java - Java Maven 程序集插件 - 多个主文件
- vue.js - 使用 GitLab Pipeline 将 Vue Js Webapp 上传到 VMware 会出现 403 禁止错误
- css - 如何使素材卡内的图标居中
- c++ - 寻找在我的应用程序中使用关键部分的潜在危险,我在 SO 中阅读了一些答案,这给了我灵感