Skip to content
Tiantan
Articles

Django modell frissítése

On február 18, 2021 by admin

Hogyan javíthatom ezt? Nagy és csúnya. Van valami tanács?

POST-ot kapok egy API-tól, és csak azokat a mezőket szeretném frissíteni, amelyek nem nullák.

titulo = request.data.get("titulo", "") image = request.data.get("image", "") price = request.data.get("price", "") wholesale_price = request.data.get("wholesale_price", "") reference = request.data.get("reference", "") ean13 = request.data.get("ean13", "") rating = request.data.get("rating", "") sales = request.data.get("sales", "") active = request.data.get("active", "") encilleria = request.data.get("encilleria", "") delivery = request.data.get("delivery", "") summary = request.data.get("summary", "") brand_id = request.data.get("brand_id", "") consejos = request.data.get("consejos", "") ingredientes = request.data.get("ingredientes", "") stock = request.data.get("stock", "") es_pack = request.data.get("es_pack", "") descontinuado = request.data.get("descontinuado", "") tags = request.data.get("tags", "") destacado_buscado = request.data.get("destacado_buscado", "") supplier_delivery = request.data.get("supplier_delivery", "") imagen_mala = request.data.get("imagen_mala", "") guia_cosmetica_attrs = request.data.get("guia_cosmetica_attrs", "") guia_cosmetica_cats = request.data.get("guia_cosmetica_cats", "") try: producto = Product.objects.get(pk=product_id) if titulo != "": producto.titulo = titulo if titulo != "": producto.slug = slugify(titulo) if image != "": producto.image = image if price != "": producto.price = price if wholesale_price != "": producto.wholesale_price = wholesale_price if reference != "": producto.reference = reference if ean13 != "": producto.ean13 = ean13 if rating != "": producto.rating = rating if sales != "": producto.sales = sales if active != "": producto.active = active if encilleria != "": producto.encilleria = encilleria if delivery != "": producto.delivery = delivery if summary != "": producto.summary = summary if brand_id != "": producto.brand_id = brand_id if consejos != "": producto.consejos = consejos if ingredientes != "": producto.ingredientes = ingredientes if stock != "": producto.stock = stock if es_pack != "": producto.es_pack = es_pack if descontinuado != "": producto.descontinuado = descontinuado if tags != "": producto.tags = tags if destacado_buscado != "": producto.destacado_buscado = destacado_buscado if supplier_delivery != "": producto.supplier_delivery = supplier_delivery if imagen_mala != "": producto.imagen_mala = imagen_mala if guia_cosmetica_attrs != "": producto.guia_cosmetica_attrs = guia_cosmetica_attrs if guia_cosmetica_cats != "": producto.guia_cosmetica_cats = guia_cosmetica_cats try: producto.save() except ValueError: return Response({"success": False, "msg": "Value Error"}) except ObjectDoesNotExist: return Response({"success": False, "msg": "Product does not exist"}) 

Megjegyzések

  • Ez a kérdés hiányos. Annak érdekében, hogy az ellenőrök jobb válaszokat tudjanak kapni, kérjük, adjon elegendő összefüggést a kérdéséhez. Minél többet mesélsz arról, hogy mit csinál a kódod, és mi ennek a célja, annál könnyebben segítenek az ellenőrök. A kérdéseknek tartalmazniuk kell a kód működésének leírását

Válasz

Használhatja a .update() lekérdezési módot, és kicsomagolhatja a request.data szótár:

product.objects.filter(pk=product_id).update(**request.data) 

Vagy hurokozhat request.data elemeket, és használja a setattr() beépített funkciót :

producto = Product.objects.get(pk=product_id) for attr, value in request.data.items(): if value: # check if value is "truthy" - you may not need this check, please test setattr(producto, attr, value) producto.save() 

Ne feledje, hogy a “slugify” részt másképp lehet és kell kezelnie – például felülírja a “s save() modellt és létrehozhat egy slugot, ha egy titulo megadva – példa ide .

Megjegyzések

  • Hú, ez a ' s fantasztikus! Ez ' biztonságos az SQL injekcióval szemben?
  • @MarcosAguayo abszolút, átmegy a Django ORM-en és én s injekcióval biztonságos. Köszönöm.

Written by admin

Vélemény, hozzászólás? Kilépés a válaszból

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Legutóbbi bejegyzések

  • Rezonáns dipólusú balun használatával
  • Mi a különbség “ nem ” és “ nem ? [duplicate]
  • A JFK-n tud-e mozogni a belföldi járatokon a terminálok repülőtere között?
  • “ Mélyen értékelik ” vagy “ nagyra értékelik ”
  • Mit jelent az ' elvont ötletek '? [zárt]

Archívum

  • 2021 február
  • 2021 január
  • 2020 december
  • 2020 november
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

Back to top