Cadrul Django Rest Framework actualizează în masă inserarea în loc de actualizare (Programare, Nuget, Pachet Nuget)

user2708386 a intrebat.

Încerc să construiesc o vizualizare de actualizare în masă pentru un anumit model folosind Django Rest Framework. Pe termen scurt, trebuie doar să actualizeze un singur câmp (comutarea unei invitații de la submitted=False la submitted=True), dar aș dori să poată oferi mai multe funcționalități în viitor. Cu toate acestea, ori de câte ori testez vizualizarea, se creează un nou obiect în loc să fie modificat cel curent.Am impresia că trebuie să fie o simplă greșeală din partea mea, dar nu-mi dau seama ce se întâmplă. Se pare că obiectul serializator ignoră valoarea pentru „id” transmisă prin JSON, ceea ce poate contribui la această problemă. Codul actual este:Poate cineva să facă puțină lumină asupra a ceea ce aș putea face greșit? 3 Răspunsuri

Carlton Gibson

Nu treceți instanțe de obiect către serializator. (Astfel, acesta va crea noi instanțe, mai degrabă decât să le actualizeze.) Vedeți pagina

documentația privind tratarea obiectelor multiple în serializatoare

Comentarii

    unde veți vedea QuerySet-ul dvs. transmis.

  • > Por .miki725
  • > Por În cazul în care cineva caută o bibliotecă care să se ocupe de acest lucru, am scris o bibliotecă .Django-REST-Framework-bulk
  • care permite să facă acest lucru în câteva linii (exemplul face doar actualizare în bloc, dar biblioteca permite și crearea și ștergerea în bloc):

  • > Por .26
  • Se pare că Django-REST-Framework-bulk nu mai este întreținut. – 

Joseph

10 răspunsuri
7guyo

Django are o metodă de actualizare pentru a gestiona acest lucru. Este posibil să doriți să citiți informațiile complete din documentația django.

Iată un exemplu de cod pe care îl puteți utiliza pentru a actualiza un anumit câmp pentru mai multe înregistrări:cdnuget.exe

nuget locals all -list

nuget locals all -clear

Comentarii

  • > Por .
  • > Por .
  • > Por .
  • nuget update -selfUnknown commmand: 'locals' > Por .
  • devenv.exe > Por .

dotnet nuget locals all --clear

Comentarii

  • > Por .
  • dotnet nuget locals all --clear > Por .
  • dotnet nuget locals all --clear > Por .
  • > Por .
del %LOCALAPPDATA%NuGetCache*.nupkg /q

Comentarii

  • > Por .
  • > Por .
%userprofile%.nugetpackages

Comentarii

  • > Por .
  • > Por .
  • > Por .

$ nuget locals all -list
http-cache: C:UsersMyUserAppDataLocalNuGetv3-cache
packages-cache: C:UsersMyUserAppDataLocalNuGetCache
global-packages: C:UsersMyUser.nugetpackages

nuget locals all -clear

Comentarii

  • > Por .
  • Batmaci 1.0, Batmaci 1.1, Batmaci 1.2 > Por .
  • > Por .

dotnet nuget locals all --clear

Comentarii

  • > Por .
  • > Por .

dnx

Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
   CACHE https://www.nuget.org/api/v2/
   CACHE http://192.168.148.21/api/odata/

dnu clear-http-cache

dotnet

…și iată-l:

dotnet restore --no-cache

Comentarii

  • Aș merge cu abordarea de mai sus de la Ruslan, deoarece am unele probleme cu pachetele chiar și trecerea –no-cache –  > Por Alexz.
  • Rulează dotnet restore --no-cache a funcționat pentru mine, dar a trebuit să o fac de la un prompt Powershell rulând ca administrator –  > Por shanabus.
Tim Abell

Ștergerea memoriei cache

Cu dotnet core cli

dotnet nuget locals all --clear

Cu Visual Studio 2017

  1. Mergeți la meniu InstrumenteNuGet Package ManagerSetări Manager de pachete.
  2. Faceți clic pe Ștergeți toate cache-urile NuGet:

Cu clipul nuget

Descărcați și instalați instrumentul de linie de comandă NuGet.

nuget locals all -clear

Cu linia de comandă Windows

del %LOCALAPPDATA%NuGetCache*.nupkg /q

(poate fi utilizat în .bat fișier)

Cu PowerShell

rm $env:LOCALAPPDATANuGetCache*.nupkg

Sau în modul „quiet” (fără mesaje de eroare):

rm $env:LOCALAPPDATANuGetCache*.nupkg 2> $null

Locația cache

Windows

%userprofile%.nugetpackages

Linux

~/.nuget/

Server de construcție

%windir%/ServiceProfiles/[account under build service runs]AppDataLocalNuGetCache

Exemplu:

C:WindowsServiceProfilesNetworkServiceAppDataLocalNuGetCache

Acest răspuns este o reluare a tuturor răspunsurilor existente pentru comoditatea dvs.

khablander

Dacă aveți nevoie să ștergeți memoria cache NuGet pentru serverul/agentul dvs. de construcție, puteți găsi memoria cache pentru pachetele NuGet aici:

%windir%/ServiceProfiles/[account under build service runs]AppDataLocalNuGetCache

Exemplu:

C:WindowsServiceProfilesNetworkServiceAppDataLocalNuGetCache

Comentarii

  • Mi-am luat libertatea de a marca calea pentru a o face mai ușor de citit și de a înlocui [windows dir] cu %windir%, , care vă va plasa automat în directorul corect atunci când îl introduceți, de exemplu, în Windows Explorer. –  > Por Kjartan.
honzakuzel1989

Puteți folosi și PowerShell (la fel ca mine).

De exemplu:

rm $env:LOCALAPPDATANuGetCache*.nupkg

Sau modul „liniștit” (fără mesaje de eroare):

rm $env:LOCALAPPDATANuGetCache*.nupkg 2> $null