Ich weiß, dass diese Frage schon einmal gestellt wurde, aber ich habe die Antworten durchgelesen, und keine von ihnen hat genügt. Ich versuche, eine Stelle auf der Jobbörse zu schaffen, auf der sich ein Arbeitgeber anmelden und Stellen aufgeben kann. So gibt es ein Employer
Objekt und jeder Arbeitgeber kann so viele Job
s wie sie wollen. Ich bin mir nicht sicher, wie ein Formular erstellt werden soll, in dem eine bestimmte Modellinstanz bearbeitet werden kann.Formular zum Bearbeiten bestimmter Instanz des Modells
Das Modell Job
:
poster = models.ForeignKey(Employer, on_delete=models.CASCADE)
job_title = models.CharField(max_length=50)
establishment_name = models.CharField(max_length = 50)
details = models.TextField(max_length = 2000)
salary = models.CharField(max_length = 20)
address = models.CharField(max_length = 50)
city = models.CharField(max_length = 50)
state_choices = (
#long list omitted on purpose
)
state = models.CharField(choices=state_choices, max_length = 20)
zip_code = models.CharField(max_length = 10)
def __str__(self):
return self.job_title + " - " + self.establishment_name \
+ ", " + self.poster.user.first_name + " " +self.poster.user.last_name
ich eine Form haben Jobs schreiben:
class JobPostForm(ModelForm):
class Meta:
model = Job
fields= ('job_title',
'establishment_name',
'details',
'address',
'city',
'state',
'zip_code',
)
eine Ansicht Jobs schreiben:
if request.method == 'POST':
form = JobPostForm(request.POST)
if form.is_valid():
job_object = form.save(commit=False)
job_object.poster = request.user.employer
job_object.save()
return redirect('employer_home')
else:
form = JobPostForm()
und eine Vorlage Jobs zu schreiben:
<form method="post" class="">
{% csrf_token %}
{{ form.as_p}}
<button type="submit">Post Job</button>
</form>
aber ich bin mir nicht sicher, wie ich etwas erstellen kann, das einen Jobbeitrag bearbeiten kann. Ich habe Beispiele mit UpdateView()
gesehen, aber das konnte nicht funktionieren. Weiß jemand, wie man dies für diese bestimmte Instanz zum Laufen bringt?
Mit 'UpdateView' sollte genauso einfach sein wie die Formularklasse angeben, die Sie zu aktualisieren verwenden, und sicherzustellen, dass' pk' Teil der URL des kwargs ist. Wenn Sie den pk nicht in der URL haben möchten, können Sie 'get_object' in der View-Klasse überschreiben, um das Objekt mit den für Ihre Anwendung erforderlichen Mitteln zu erhalten. – dannosaur