Sto tentando di salvare 100 caratteri utente modulo in un'applicazione minima 'microblog'. Il mio codice sembra non avere alcun mystakes, ma non funziona. L'errore è in views.py, non riesco a salvare la chiave esterna nella tabella utente.Impossibile salvare il contenuto del modulo nel database
models.py
assomiglia a questo:
class NewManager(models.Manager):
def create_post(self, post, username):
new = self.model(post=post, created_by=username)
new.save()
return new
class New(models.Model):
post = models.CharField(max_length=120)
date = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User, blank=True)
objects = NewManager()
class NewForm(ModelForm):
class Meta:
model = New
fields = ['post']
# widgets = {'post': Textarea(attrs={'cols': 80, 'rows': 20})
def save_new(request):
if request.method == 'POST':
created_by = User.objects.get(created_by = user)
date = request.POST.get('date', '')
post = request.POST.get('post', '')
new_obj = New(post=post, date=date, created_by=created_by)
new_obj.save()
return HttpResponseRedirect('/')
else:
form = NewForm()
return render_to_response('news/new_form.html', {'form': form},context_instance=RequestContext(request))
non ho menzionato le importazioni qui - hanno finito a destra, in ogni caso. Il mio errore è in views.py. Quando provo a salvarlo dice:
locale variabile 'created_by' fatto riferimento prima dell'assegnazione
Se metto created_py
come parametro, il salvataggio ha bisogno di più parametri. È davvero strano
Inserire il codice di quattro spazi (o selezionarlo e premere Ctrl + K). –
Sono perplesso da questo: 'created_by = User.objects.get (created_by = user)', sei sicuro che il modello 'User' ha' created_by' column? Questo dovrebbe fallire con 'FieldError' però. Anche il traceback completo sarebbe utile. –