Es gibt keine Fehler, aber das Formular wird nicht in der Datenbank gespeichert. Ansonsten ist es möglich, Daten von django admin hinzuzufügen.Kann nicht in der Datenbank von Django ModelForm gespeichert werden
Die URLs und Weiterleitungen funktionieren auch gut, ich kann in der Lage sein, das Formular zu öffnen, bearbeiten/put Daten und drücken Sie Senden, aber die Datenbank spiegelt nicht wider.
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'
)
Vorlage
<form action="." method="POST" class="padding">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
und schließlich das ist mein 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 = False bedeutet nicht speichern. –