[英]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 框架中的刪除操作
當您要刪除特定對象時,您必須具有特定的過濾器,該過濾器只會返回一個對象。 據我所知,您在Car
和Pricing
模型之間存在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.