Python 让对象状态决定Django中的form_类
我有一个经理Python 让对象状态决定Django中的form_类,python,django,Python,Django,我有一个经理 class OrderManager(models.Manager): STATE_REQUESTED = 0 STATE_PROCESSED = 1 STATE_CONFIRMED = 2 STATE_CHOICES = [ (STATE_REQUESTED, _('Requested')), (STATE_PROCESSED, _('Processing')), (STATE_CONFIRMED,
class OrderManager(models.Manager):
STATE_REQUESTED = 0
STATE_PROCESSED = 1
STATE_CONFIRMED = 2
STATE_CHOICES = [
(STATE_REQUESTED, _('Requested')),
(STATE_PROCESSED, _('Processing')),
(STATE_CONFIRMED, _('Confirmed')),
]
def requested(self):
return self.filter(state=self.STATE_REQUESTED)
在每个状态下,您需要不同的UpdateView
,订单可以在这些状态下执行
控制这种情况的最佳方法是什么?我可以为每个状态创建一个视图,例如,RequestOrderView
、ProcessOrderView
和ConfirmOrderView
。但是我如何在模板中签入链接应该指向的视图
如何检查对象在视图和模板中是否处于特定状态?我想我可以用context['requested\u orders']=Order.objects.requested()
的queryset填充模板,并用
{% if object in requested_orders %}
...
<a href="{% url 'process_order' object.id %}">Process order</a>
...
{% elif object in processed_orders %}
...
<a href="{% url 'confirm_order' object.id %}">Confirm order</a>
...
{% endif %}
{%if请求的\u订单中的对象%}
...
...
{%elif对象在已处理的\u订单%}
...
...
{%endif%}
但是这是一种聪明的方法吗?难道你不能有一个直接包含类型作为选择器的url吗
url(
r'^(?P<action>[-\w]+)_order/(?P<id>[0-9]+)$',
views.YourView,
name="order")
url(
r′^(?P
您不能将包含该类型的url直接用作选择器吗
url(
r'^(?P<action>[-\w]+)_order/(?P<id>[0-9]+)$',
views.YourView,
name="order")
url(
r′^(?P
您可以重写get\u form\u class()方法并为每个对象状态返回不同的表单。您还可以重写get\u template方法以根据对象状态返回不同的模板。您可以重写get\u form\u class()方法,并为每个对象状态返回不同的表单。您还可以重写get_template方法,根据对象状态返回不同的模板。将templatename属性添加到模型中并使用{%include object.templatename%}怎么样在模板中?向模型中添加templatename属性并在模板中使用{%include object.templatename%}怎么样?向模型中添加templatename属性并在模板中使用{%include object.templatename%}怎么样?