我在 phpmyadmin 的資料庫中有一個值,我想用一個新的計算值更改這個值。函式 save() 不起作用,錯誤告訴我這是因為它是一個整數。我不知道如何解決這個問題。
def DeleteBulle (request, id_bulle):
#suppression de la bulle par l'id
id_bulle
param = Bulles.objects.get(pk=id_bulle)
#param.delete()
#adaptation du champ "nombre de bulle" dans la table "site"
site=param.id_site
print('site', site)
compte=Bulles.objects.filter(id_site=site).count()
print('nombre bulle avec site identique', compte)
nbrbulle=Bulles.objects.get(pk=id_bulle).id_site.nombre_bulles
nbrbulle=compte
nbrbulle.save()
#réussite
print("Bulle supprimée")
return redirect('api_bulles_frontend')
楷模 :
class Site(models.Model):
id_site = models.AutoField(
db_column="Id_site", primary_key=True
) # Field name made lowercase.
nom = models.CharField(
db_column="Nom", max_length=100
) # Field name made lowercase.
vitesse_b = models.FloatField(db_column="Vitesse_b") # Field name made lowercase.
vitesse_c = models.FloatField(db_column="Vitesse_c") # Field name made lowercase.
ecart_type_b = models.FloatField(
db_column="Ecart_type_b"
) # Field name made lowercase.
ecart_type_c = models.FloatField(
db_column="Ecart_type_c"
) # Field name made lowercase.
type_site = models.CharField(
db_column="Type_site", max_length=20
) # Field name made lowercase.
longitude = models.FloatField(db_column="Longitude") # Field name made lowercase.
latitude = models.FloatField(db_column="Latitude") # Field name made lowercase.
nombre_bulles = models.IntegerField(db_column="Nombre_bulles")
date_vidange = models.DateField(
db_column="Date_vidange"
) # Field name made lowercase.
#trajet = models.ManyToManyField(Trajet, related_name='site_moi')
class Meta:
db_table = "site"
class Bulles(models.Model):
id_bulle = models.AutoField(primary_key=True)
num_bulle = models.CharField(max_length=20)
type_bulle = models.CharField(max_length=20)
colories = models.CharField(max_length=20)
latitude = models.FloatField()
longitude = models.FloatField()
date_vidange = models.DateField(
db_column="date_vidange"
)
id_depot = models.ForeignKey(
"Depot", on_delete=models.CASCADE, db_column="id_depot"
)
id_site = models.ForeignKey(
"Site",related_name='bul', on_delete=models.CASCADE, db_column="Id_site"
)
class Meta:
db_table = "bulles"
我不知道如何解決這個問題。謝謝您的幫助。
uj5u.com熱心網友回復:
您應該site使用更新的專案保存物件,而不是更新nombre_bulles,這只是一個整數:
from django.shortcuts import get_object_or_404
from django.views.decorators.http import require_http_methods
@require_http_methods(['POST', 'DELETE'])
def DeleteBulle(request, id_bulle):
bulle = get_object_or_404(Bulles, pk=id_bulle)
site = param.id_site
bulle.delete()
site.nombre_bulles = site.bul.count()
site.save(update_fields=['nombre_bulles'])
return redirect('api_bulles_frontend')
注意:通常 Django 模型被賦予一個單數名稱,所以
Bulles而不是.Bulle
注意:通常不會
id_…為ForeignKey欄位添加前綴,因為 Django 會自動添加帶有…_id后綴的“雙胞胎”欄位。因此應該是site,而不是。id_site
注意:通常最好使用[Django-doc],然后直接使用[Django-doc]。如果物件不存在,例如因為用戶自己更改了 URL,則將導致回傳HTTP 404 Not Found回應,而 using 將導致HTTP 500 Server Error。
get_object_or_404(…).get(…)get_object_or_404(…).get(…)
注意:可以使用
@require_POST裝飾器 [Django-doc] 將視圖限制為僅可用于 POST 請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531953.html
標籤:phpdjangodjango模型django-rest-framework整数
上一篇:篇(5)-Asp.Net Core入門實戰-使用EF,操作資料庫,要先配好相應代碼
下一篇:PHP表單插入Mysql資料庫
