簡體   English   中英

Django CreateView:在一個表單中自動設置兩個外鍵字段

[英]Django CreateView: automatically set two foreign key fields in a form

我有一個名為“預訂”的模型,其中在用戶和專家之間預訂事件。 我正在嘗試將預訂 CreateView 設置為自動知道當前用戶和用戶正在訪問的個人資料的專家,以便不需要從預訂表單的下拉菜單中選擇這兩個用戶。 通過覆蓋 form_valid 方法,我能夠為當前用戶成功執行此操作,但不確定如何為專家執行此操作。

模型.py:

class Booking(models.Model):
    user = models.ForeignKey(CustomUser, null=True, default='', on_delete=models.CASCADE)
    expert = models.ForeignKey(CustomUser, null=True, default='',on_delete=models.CASCADE, related_name='bookings')
    title = models.CharField(max_length=200, default='Video call with ..', null=True)
    start_time = models.DateTimeField('Start time', null=True)
    end_time = models.DateTimeField('End time', null=True)
    notes = models.TextField('Notes', help_text='Please provide some detail on what you would like to learn or discuss', blank=True, null=True)

視圖.py:

class BookingView(CreateView):
    model = Booking
    form_class = BookingForm
    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(BookingView, self).form_valid(form)

網址.py:

urlpatterns = [
    #path('', include('booking.urls')),
    path('signup/', views.SignUp.as_view(), name='signup'),
    path('login/', auth_views.LoginView.as_view(), {'authentication_form': LoginForm}, name='login'),
    path('profile/', views.view_profile, name='profile'),
    path('profile/<int:pk>/', views.view_profile, name='profile_with_pk'),
    path('profile/<int:pk>/booking/', BookingView.as_view(), name='user_booking_new'),
    path('profile/edit/', views.EditProfileView, name='edit_profile'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我試過將“form.instance.expert”設置為 form_valid 方法,但沒有奏效。 謝謝。

在上述評論的幫助下回答了我的問題。 答案在 views.py 中:

class BookingView(CreateView):
    model = Booking
    form_class = BookingForm
    def form_valid(self, form):
        form.instance.user = self.request.user
        form.instance.expert = CustomUser.objects.get(id=self.kwargs.get('pk'))
        return super(BookingView, self).form_valid(form)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM