1
我試圖創建一個新的功能,但我發現這個錯誤的Django:「模型」對象有沒有屬性「更新」
「SocieteIntervention」對象有沒有屬性「更新」
我在我的應用程序的幾種模式:
class Societe(models.Model):
Nom = models.CharField(null= False, max_length=30, verbose_name='Nom de Société')
Etat = models.CharField(max_length = 30, choices = CHOIX_ETAT_SOCIETE, null=False, verbose_name="Etat")
Adresse = models.CharField(max_length=30, verbose_name='Adresse')
Ville = models.CharField(max_length=30, verbose_name='Ville')
Zip = models.IntegerField(verbose_name='Code Postal')
Region = models.CharField(max_length=30, verbose_name='Région')
Pays = CountryField(blank_label='Sélectionner un pays', verbose_name='Pays')
Mail = models.CharField(max_length=40, verbose_name='Email')
Web = models.CharField(max_length=40, verbose_name='Site Web')
Telephone = models.CharField(max_length=20, verbose_name='Téléphone Fixe')
Fax = models.CharField(max_length=20, verbose_name='Fax')
SIREN = models.BigIntegerField(verbose_name='N° SIREN')
SIRET = models.BigIntegerField(verbose_name='N° SIRET')
NAF_APE = models.CharField(max_length=5, verbose_name='Code NAF-APE')
RCS = models.CharField(max_length = 30, verbose_name='Code RCS')
CHOIX_TVA = models.CharField(max_length = 30, choices=CHOIX_TVA, verbose_name='Assujeti à la TVA')
TVA = models.CharField(max_length=13, verbose_name='N° TVA Intracommunautaire')
Type = models.CharField(max_length = 30, choices = CHOIX_SOCIETE, verbose_name = 'Type de Société')
Effectif = models.CharField(max_length = 30, choices = CHOIX_EFFECTIF, verbose_name = 'Effectif')
Capital = models.IntegerField(verbose_name = 'Capital de la Société (euros)')
Creation = models.DateTimeField(auto_now_add=True)
InformationsInstitution = models.CharField(max_length=30, null=False, verbose_name='Informations Institution')
Utilisateur = models.CharField(max_length=100, null=False, verbose_name="Utilisateur", default=" ")
def save(self, *args, **kwargs):
for field_name in ['Nom', 'Ville', 'Region']:
val = getattr(self, field_name, False)
if val:
setattr(self, field_name, val.upper())
super(Societe, self).save(*args, **kwargs)
class SocieteContrat(models.Model):
Societe = models.ForeignKey(Societe, related_name="Societe", verbose_name="Société")
PointsTotal = models.FloatField(verbose_name="Nombre points total")
PointsRestant = models.FloatField(verbose_name="Nombre points restants", null=True)
def __unicode__(self):
return unicode (self.id, self.Societe, self.PointsTotal, self.PointsRestant)
class SocieteIntervention(models.Model):
Societe = models.ForeignKey(Societe, related_name="Societe1", verbose_name="Société")
Date = models.DateField(verbose_name="Date de l'Intervention")
Temps = models.IntegerField(verbose_name="Durée Intervention (min)")
Description = models.CharField(max_length=200, verbose_name="Description")
Niveau = models.CharField(max_length = 30, choices = CHOIX_NIVEAU, verbose_name = 'Niveau Intervention/Intervenant')
PointsConsommes = models.FloatField(verbose_name=u"Nombre points consommés", null=True)
class CoefficientIntervention(models.Model):
Technicien = models.FloatField(verbose_name="Coefficient Technicien")
Ingenieur = models.FloatField(verbose_name="Coefficient Ingénieur")
Consultant = models.FloatField(verbose_name="Coefficient Consultant")
Architecte = models.FloatField(verbose_name="Coefficient Architecte")
def __unicode__(self):
return unicode (self.id, self.Technicien, self.Ingenieur, self.Consultant, self.Architecte)
我的目標是:與一些點的創建服務合同秒。積分按係數扣除。這個係數取決於你的狀態:技術員,工程師,...
我創造,我認爲這樣的功能:
@login_required
def Identity_Contrat(request, id) :
societe = get_object_or_404(Societe, pk=id)
contrat = get_object_or_404(SocieteContrat, pk=id)
coefficient = CoefficientIntervention.objects.last()
if request.method == 'POST':
form = InterventionFormulaire(request.POST or None)
if form.is_valid() :
post = form.save()
Liste_Intervention = SocieteIntervention.objects.filter(Societe__id=id).values_list("Temps")
Value = Liste_Intervention.last()[0]
Type_Intervention = SocieteIntervention.objects.filter(Societe__id=id).values_list("Niveau")
if Type_Intervention.last() == (u'Ing\xe9nieur',) :
Consomme = Value * coefficient.Ingenieur
elif Type_Intervention.last() == ('Technicien',) :
Consomme = Value * coefficient.Technicien
elif Type_Intervention.last() == ('Consultant',) :
Consomme = Value * coefficient.Consultant
elif Type_Intervention.last() == ('Architecte',) :
Consomme = Value * coefficient.Architecte
PointsConsommes = SocieteIntervention.objects.latest('id').update(PointsConsommes=Consomme)
messages.success(request, 'Le formulaire a été enregistré !')
return HttpResponseRedirect('http://localhost:8000/Identity/Contrat/Societe/'+id)
else:
messages.error(request, "Le formulaire est invalide !")
else:
form = InterventionFormulaire()
context = {
"coefficient" : coefficient,
"societe" : societe,
"contrat" : contrat,
"form" : form,
}
return render(request, 'Identity_Societe_Contrat.html', context)
我填寫表格,我保存它PointsConsommes == NULL
,然後我試圖用之前計算的值更新它。
如何在表單保存時更新字段PointsConsommes
?我不克服用.update
來更新它。
謝謝!我以前用'update_fields'嘗試過,但我沒有任何效果:/所以也許我沒有很好地嘗試這個功能。無論如何,非常感謝! – Deadpool