簡體   English   中英

如何在 Django Rest Framework 中刪除 fk 記錄

[英]How to delete a fk record in Django Rest Framework

我的目標是刪除與端點中給定 id 的記錄相關的 fk 記錄。

我的網址

path('car-pricing/<uuid:car_id>/', car_pricing),

我的模特

class Pricing(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    car = models.ForeignKey(Car, related_name="pricings", on_delete=models.CASCADE)

換句話說,我想根據端點中Car的 id 刪除特定的Pricing記錄。

通過使用Car記錄的 id 請求,我可以獲得多個Pricing記錄。

是否可以根據 id 選擇刪除特定的Pricing

我的觀點(這里,我不知道如何處理刪除功能)

elif request.method == 'DELETE':
        pricing_data = request.data

        return Response(status=status.HTTP_204_NO_CONTENT)

這里請求的數據是一個空的 QueryDict 並且沒問題,因為無法將請求的數據提供給 django rest 框架中的刪除操作

當您要刪除特定對象時,您必須具有特定的過濾器,該過濾器只會返回一個對象。 據我所知,您在CarPricing模型之間存在one to many關系,因此您不能通過僅過濾car字段來刪除特定定價(因為 car 可以連接到多個定價對象)。 當您想使用某些過濾器從表中刪除特定行時,您應該對該表和這些過濾器進行約束以僅返回一行。 但是,您可以使用Pricing.object.filter(car_id=car_id).delete()刪除定價記錄,但在這種情況下,您將刪除與該汽車相關的所有定價對象。 如果您將path('car-pricing/<uuid:car_id>/', car_pricing),更改為path('car-pricing/<uuid:car_id>/<int:pk>/', car_pricing)您可以刪除特定的通過過濾為Pricing.objects.filter(pk=pk, car_id=car_id).delete()或僅使用path('car-pricing/<int:pk>/', car_pricing)Pricing.objects.filter(pk=pk).delete()您可以刪除特定的定價對象,因為此表的pk是唯一字段,也是該表的約束。

暫無
暫無

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

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