,可以通过以下步骤来实现:
Order
的模型,其中包含一个外键字段customer
,关联到Customer
模型。CreateView
视图类时,可以通过重写get_context_data()
方法来传递object pk
到模板中。在get_context_data()
方法中,我们可以获取到object pk
的值,并将其传递给模板。代码示例如下:from django.views.generic import CreateView
from .models import Order
class OrderCreateView(CreateView):
model = Order
fields = ['customer']
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['customer_pk'] = self.kwargs.get('pk') # 获取object pk的值
return context
object pk
来传递值给视图,并在表单中使用该值。代码示例如下:<!-- urls.py -->
from django.urls import path
from .views import OrderCreateView
app_name = 'orders'
urlpatterns = [
path('create/<int:pk>/', OrderCreateView.as_view(), name='order_create'),
]
<!-- order_form.html -->
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="hidden" name="customer" value="{{ customer_pk }}">
<button type="submit">Submit</button>
</form>
在上述示例中,我们通过URL的<int:pk>
部分来传递object pk
的值,并在模板中使用customer_pk
来表示该值。
通过以上步骤,我们可以在Django中传递和接收object pk
来修复CreateView
中的外键字段。
领取专属 10元无门槛券
手把手带您无忧上云