Il n'y a pas d'erreur, mais la forme ne sauvegarde pas la base de données. Sinon, il est possible d'ajouter des données depuis l'administrateur django.Impossible d'enregistrer la base de données de Django ModelForm
Les urls et bien travailler redirections, je peux aussi être en mesure d'ouvrir la forme, éditer/mettre les données et appuyez sur soumettre, mais la base de données ne reflète pas.
models.py
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class RPAS(models.Model):
user = models.OneToOneField(User)
manufacturer = models.CharField(max_length = 100, default = '')
model_name = models.CharField(max_length = 100, default = '')
serial_no = models.CharField(max_length = 50, default='')
reg_mark = models.CharField(max_length = 50, default='')
def __str__(self):
return self.user.rpas.manufacturer
# RPAS.profile = property(lambda u: RPAS.objects.get_or_create(user=u)[0])
def edit_rpas_profile(sender, **kwargs):
if kwargs['created']:
user_profile = RPAS(user=kwargs['instance'])
post_save.connect(edit_rpas_profile, sender=User)
views.py
from .forms import RPASForm
from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied
def edit_rpas(request):
if request.user.is_authenticated():
if request.method == "POST":
form = RPASForm(request.POST,instance=request.user)
if form.is_valid():
form.save(commit=False)
return redirect ('/account/rpas/')
else:
form = RPASForm(instance=request.user)
args = {'form': form}
return render(request, "accounts/edit_rpas.html", args)
else:
raise PermissionDenied
forms.py
from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from accounts.models import RPAS
class RPASForm(ModelForm):
class Meta:
model = RPAS
fields = (
'manufacturer',
'model_name',
'serial_no'
)
modèle
<form action="." method="POST" class="padding">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
et enfin c'est mon admin.py
from .models import RPAS
class RpasAdmin(admin.ModelAdmin):
list_display = ('manufacturer','model_name','reg_mark','serial_no')
def user_info(self, obj):
return obj.description
admin.site.register(RPAS, RpasAdmin)
commit = La valeur False ne sauvegarde pas. –