第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Django 使用模型形式更新模型實(shí)例

Django 使用模型形式更新模型實(shí)例

三國紛爭 2023-04-25 15:59:50
我在 Django 中有以下模型,用于存儲有關(guān)藥物的數(shù)據(jù)。class Medicine(models.Model):    Medicine_Name = models.CharField(max_length=100)    User_Associated = models.ForeignKey(User, on_delete=models.CASCADE)    Tablets_In_Box = models.IntegerField()    Dose_in_mg = models.IntegerField()    Dose_Tablets = models.IntegerField()    Number_Of_Boxes = models.IntegerField()    Last_Collected = models.DateField()    def __str__(self):        return self.Medicine_Name        def get_absolute_url(self):        return reverse('tracker-home')我正在嘗試創(chuàng)建一個(gè)模型表單,用戶可以在其中更新他們的一種藥物的最后一個(gè)集合。這是我開始的。class CollectionForm(forms.ModelForm):    class Meta:        model = Medicine        fields = ['Medicine_Name', 'Number_Of_Boxes', 'Last_Collected']我不明白如何根據(jù)現(xiàn)場的“Medicine_Name”調(diào)用我的模型實(shí)例。換句話說,我需要用戶能夠從下拉菜單中選擇正確的藥物,然后表單必須更新我的藥物模型上的“Last_Collected”和“Numer_Of_Boxes”字段。https://docs.djangoproject.com/en/2.1/topics/forms/modelforms/#the-save-method這似乎包含相關(guān)信息,但我很難了解如何在這種情況下使用它。如何根據(jù)表單中的用戶輸入正確獲取我需要的藥物表單實(shí)例?此外,如何在我的視圖中使用 save 方法來確保數(shù)據(jù)庫得到正確更新?編輯為表單添加了視圖:def update(request, pk):        instance = Medicine.objects.get(id=pk)    if request.method == 'POST':        form = CollectionForm(user=request.user, instance=instance, data=request.POST)                if form.is_valid():            instance = form.save(commit=False)            instance.User_Associated = request.user            instance.save()    else:        form = CollectionForm()     context = {'form': form}    return render(request, 'tracker/medicine_collection.html', context )
查看完整描述

2 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

觀點(diǎn):


def update(request, pk):

    instance = Medicine.objects.get(id=pk)


    if request.method == 'POST':

        form = CollectionForm(instance=instance, data=request.POST)

        if form.is_valid():

            instance = form.save(commit=False)

            instance.User_Associated = request.user

            instance.save()

        return redirect ('/')

        ....


查看完整回答
反對 回復(fù) 2023-04-25
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

嘗試了一種不同的方法(基于類的視圖 - UpdateView)我剛剛在 SO 上學(xué)到了這里。沒有測試它,但我認(rèn)為它是朝著正確方向邁出的一步。


class UpdateMedicine(LoginRequiredMixin, UpdateView):

? ? model = Medicine? #call the model you need to update

? ? fields = ['Medicine_Name', 'Number_Of_Boxes', 'Last_Collected'] #specify the fields you need to update

? ? template_name_suffix = 'medicine_update_form' #specify the template where the update form is living


? ? def get_context_data(self, **kwargs):

? ? ? ? context = super().get_context_data(**kwargs)

? ? ? ? context.update(

? ? ? ? ? ? user=self.request.user, #get the current logged in user

? ? ? ? ? ? instance=get_object_or_404(Medicine, pk=self.kwargs['pk']) #get the pk of the instance

? ? ? ? )

? ? ? ? return context


? ? def form_valid(self, form):

? ? ? ? form.instance.medicine = get_object_or_404(Medicine, slug=self.kwargs['pk'])

? ? ? ? return super().form_valid(form) #saves the updates to the instance?


? ? def get_success_url(self):

? ? ? ? return reverse('medicine-collection') #name of the url where your 'tracker/medicine_collection.html is living

將適當(dāng)?shù)哪0搴?url 鏈接到上面的示例并自己嘗試一些事情。


查看完整回答
反對 回復(fù) 2023-04-25
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

這是基于更新特定用戶的實(shí)例。本教程幫助我實(shí)現(xiàn)了同樣的目標(biāo)。

https://youtu.be/EX6Tt-ZW0so


查看完整回答
反對 回復(fù) 2023-04-25
  • 2 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號