【发布时间】:2020-07-05 17:06:42
【问题描述】:
我有一个名为 products 的模型,如下所示:
class Product(models.Model):
name = models.CharField(max_length=200, null=True)
r_price = models.FloatField(null=True)
d_price = models.FloatField(null=True, blank=True, default='')
start_date = models.DateField(null=True, blank=True, default='')
end_date = models.DateField(null=True, blank=True, default='')
我的模型中的日期字段称为 start_date 和 end_date。
我的意图是如果当前日期在 start_date 和 end_date 的范围内,d_price 将是有效的(在其表单内提交值)。
如果当前日期不在 start_date 和 end_date 的范围内,或者如果当前日期超过了结束日期,则 r_price 字段将有效地获取要提交的值,并且 d_price 将不再有效。
参见下文,了解基于模型创建和更新实例时的视图。
创建实例时 -
def NewProductProfile(request):
form = CreateProductForm()
if request.method == 'POST':
form = CreateProductForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('product_list')
return render(request, 'accounts/new_product_profile.html', {'form': form})
更新实例时 -
def EditProduct(request, pk):
product = Product.objects.get(id=pk)
form = ProductForm(instance=product)
if request.method == 'POST':
form = ProductForm(request.POST, instance=product)
if form.is_valid():
form.save()
return redirect('product_list')
return render(request, 'accounts/edit_product_profile.html', {'form': form})
有效,表示提及的字段将被激活。
例如,如果当前日期在start_date和end_date的范围内,则在提交表单时更新实例。
r_price 中的 Float 值在其表单中提交时将不考虑也不保存在数据库中,而只会考虑 d_price(如果当前日期在 start_date 和 end_date 的范围内)。
因此,如果当前日期不在 start_date 和 end_date 之间,则不会保存 d_price 中的 float 值,但在通过表单提交时更新产品实例时会将 r_price 保存在数据库中。
start_date 和 end_date 字段将由预期用户手动输入。
这将如何实施?
【问题讨论】:
-
“d_price/r_price 对取值有效”是什么意思?
-
为了清楚起见,我已经编辑了帖子。
标签: python django django-views