- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的一个 View 中使用了 django modelformset_factory。我正在使用 javascript 向模板中的表单集添加新表单。一切正常,但我的问题是,当我尝试使用 modelformset_factory 创建一个新对象时,它向我显示了所有对象作为我之前创建的表单。或者简单地说,当我使用 modelformset_factory 表单创建新实例时,它向我显示了最后提交的表单。就像我在初始化 modelformset_factory 和模板时定义了 extra = 0
一样,我向 formset 添加了 5 个表单并提交了它们。下次当我重新渲染为另一个用户创建日历的模板时,它会显示我之前为前一个用户提交的所有实例。意味着它会显示我为以前的用户提交的包含完整数据的 5 个表格。
我的模型、Formset、Form和View如下。
class Calendar(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=200, null=True, blank=True)
date = models.DateField(verbose_name=_('Date'))
def __unicode__(self):
return self.name
class UserCalendar(forms.ModelForm):
date =forms.DateField(input_formats=['%d-%m-%Y', '%d-%m-%y'])
class Meta:
model = ProviderCalendar
exclude = ('user',)
class CalendarFormset(BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(CalendarFormset, self).__init__(*args, **kwargs)
for form in self.forms:
form.empty_permitted = False
def clean(self):
return super(CalendarFormset, self).clean()
class CreateCalendar(LoginRequiredMixin,DetailView):
model = Profile
template_name = 'calendar_create.html'
formset = modelformset_factory(Calendar,
form=CalendarForm,
formset=CalendarFormset,
extra=0,
)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = super(CreateCalendar, self).get_context_data(**kwargs)
context['formset'] = self.formset
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
formset = self.formset(request.POST)
self.object = self.get_object()
if formset.is_valid():
for form in formset.save(commit=False):
form.user = self.get_object().user
form.save()
messages.success(request, _('Calendar created successfully'))
return redirect("detail_profile")
else:
return self.render_to_response(self.get_context_data(formset=formset))
我的下一个问题是我想要 unique_together = (user, date)。我已经从表单中排除了用户字段,因此唯一的一起表单验证将不起作用。有什么方法可以检查提交的表单集表单的唯一日期。
最佳答案
第一个问题的答案 即 modelformset_factory 始终维持旧数据
就在这里。 https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#changing-the-queryset正如文档中给出的那样,通过覆盖 basemodelformset 的构造函数来生成查询集
from django.forms.models import BaseModelFormSet
从 myapp.models 导入作者
class CalendarFormset(BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(CalendarFormset, self).__init__(*args, **kwargs)
self.queryset = Calendar.objects.none()
它会解决问题1。
关于django modelformset_factory 即使在成功创建对象后也能维持先前提交的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29472751/
我的应用将 SceneKit 内容的“页面”与图像和文本交替。当我从图像页面前进到新的 SceneKit 页面时,前一个 SceneKit 页面中的内容会短暂显示,然后被新内容替换。时髦。 我只使用一
我正在尝试处理(在 C# 中)包含一些数字数据的大型数据文件。给定一个整数数组,如何对其进行拆分/分组,以便如果下一个 n(两个或更多)是负数,则前一个 n 元素被分组。例如,在下面的数组中,应该使用
刚接触promises,研究过。所以我的代码和我的理解: sql.connect(config).then(function(connection) { return connection.req
目前我在 if (roobaf) block 中有一些代码,这取决于 foo 和 bar 是否为假。我可以在 block 内再次检查这些条件,但感觉像是不必要的代码重复。 if (foo) {
我是一名优秀的程序员,十分优秀!