python - 在 django view.py 的 modelformset 工厂中获取 FieldError
问题描述
我得到 FieldError 为:
为 AssistantNotes 指定的未知字段(注释日期)
当我调用页面时。它抛出这个错误。我正在使用 Django 1.9.5 和 python 2.7。我在我的数据库中的 AssistantNotes 表中记录了字段。如果我在我的视图中从 modelformset_factory 行中删除“notedate”,它会起作用。我无法解决为什么它没有显示注释,尽管它在数据库和模型中。并产生错误。该字段已在模型中。
我的观点是:
def edit_assistant_notes(request):
isassistantsuperadmin = getUserPermissions(request) #Yes if 1, no if 0
list = getUserType(request)
userisassistant = list[2]
if userisassistant == "YES" or isassistantsuperadmin ==1:
list = getUserType(request)
type = list[0]
usertype = list[1] #"Nöbetçi Muavin":1 , "Yetkili":2
if request.method == 'GET':
if AssistantNotes.objects.filter(notedate=nicosia_date(datetime.today()).date()).count() == 0:
AssistantNotesFormsetFactory = modelformset_factory(AssistantNotes, fields=('time', 'notedate', 'categories', 'type', 'dailynote',))
else:
AssistantNotesFormsetFactory = modelformset_factory(AssistantNotes, fields=('time', 'notedate', 'categories', 'type', 'dailynote',), can_delete=True)
if usertype == 1:
formset = AssistantNotesFormsetFactory(queryset=AssistantNotes.objects.filter(notedate=nicosia_date(datetime.today()).date(), type=type))
elif usertype == 2:
formset = AssistantNotesFormsetFactory(queryset=AssistantNotes.objects.all().order_by("notedate", "time"))
helper = TableInlineHelper()
return render(request, 'edit-assistant-notes.html', {'formset': formset, 'helper': helper})
我的模型是:
class AssistantNotes(BaseModel):
categories = models.CharField(choices=CATEGORIES, default="GENERAL", max_length=100, verbose_name=_("CAT"))
time = models.CharField(choices=TIME, default="-------------", max_length=20, verbose_name=_("Time"))
dailynote = models.TextField(null=True, blank=True, verbose_name=_("Add Note"))
writer = models.TextField(null=True, blank=True, verbose_name=_("Adder"))
notedate = models.DateField(auto_now_add=True, db_index=True, verbose_name=_("Date"))
type = models.CharField(choices=SCHOOLTYPE, default="---", max_length=100, verbose_name=_("SchoolType"))
def __unicode__(self):
return "%s / %s" % (self.dailynote, self.categories)
class Meta:
ordering = ['dailynote']
解决方案
我怎样才能强制这个字段是可编辑的?
您可以覆盖模型的 save() 方法,而不是设置 auto_now_add,例如
class AssistantNotes(BaseModel):
....
notedate = models.DateField(db_index=True, verbose_name=_("Date"))
def save(self, *args, **kwargs):
if not self.id:
self.notedate = timezone.now()
return super(AssistantNotes, self).save(*args, **kwargs)
推荐阅读
- javascript - 获取 TypeError:尝试更改状态属性时,Object(...) 不是函数错误
- apache-nifi - Nifi:在 RouteOnAttribute 中使用动态变量
- excel - Excel - 使用多个标准(索引/匹配)在相邻的列中显示多个结果?
- javascript - 在“react-pdf”中加载所有 pdf 页面时重新渲染问题
- django - Django TypeError:得到了一个意外的关键字参数'model_name'
- c++ - 澄清 C 和 C++ 中结构的 ODR 规则的差异
- php - PHP连续减法两个数组
- kotlin - 这个问题是否与桥接设计模式匹配
- c++ - C ++:使用适当的序列号创建向量
- finance - 从接收tick数据到生成1分钟K线的实时处理