In Django, how do you pass a ForeignKey into an instance of a Model? -
i writing application stores "jobs". defined having foreignkey linked "user". don't understand how pass foreignkey model when creating it. model job worked fine without foreignkey, trying add users system can't form validate.
models.py:
from django.db import models django import forms django.contrib.auth.models import user class job(models.model): user = models.foreignkey(user) name = models.charfield(max_length=50, blank=true) pub_date = models.datetimefield('date published', auto_now_add=true) orig_image = models.imagefield('uploaded image', upload_to='origimagedb/', blank=true) clean_image = models.imagefield('clean image', upload_to='cleanimagedb/', blank=true) fullsize_image = models.imagefield('fullsize image', upload_to='fullsizeimagedb/') fullsize_clean_image = models.imagefield('fullsize clean image', upload_to='fullsizecleanimagedb/') regions = models.textfield(blank=true) orig_regions = models.textfield(blank=true) class jobform(forms.modelform): class meta: model = job
in views.py creating objects follows:
if request.method == 'post': form = jobform(request.post, request.files) if form.is_valid(): #do here
i understand passes form data , uploaded files form. however, don't understand how pass in user set foreignkey.
thanks in advance can help.
a typical pattern in django is:
- exclude
user
field model form - save form
commit=false
- set
job.user
- save database
in case:
class jobform(forms.modelform): class meta: model = job exclude = ('user',) if request.method == 'post': form = jobform(request.post, request.files) job = form.save(commit=false) job.user = request.user job.save() # next line isn't necessary here, because don't have m2m fields form.save_m2m()
see django docs on model form save()
method more information.
Comments
Post a Comment