Я пытаюсь дать Джанго попробовать, разработав простую страницу, где люди могут спросить что-то о продуктеPass ток product_id к модели в Django
Это моя модель, я могу создавать продукты в админке , отобразите страницу продукта, и форма появится с полями электронной почты и текстом.
class Product(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=100)
text = models.TextField()
class Question(models.Model):
email = models.CharField(max_length=100)
product = models.ForeignKey(Product, default=?, editable=False)
date = models.DateTimeField(auto_now=True, editable=False)
text = models.TextField()
class QuestionForm(ModelForm):
class Meta:
model = Question
Но я не знаю, как рассказать модели, в которой идентификатор продукта должен быть сохранен.
Это мой views.py
# other stuff here
def detail(request, product_id):
p = get_object_or_404(Product, pk=product_id)
f = QuestionForm()
return render_to_response('products/detail.html', {'title' : p.title, 'productt': p, 'form' : f},
context_instance = RequestContext(request))
def question(request, product_id):
p = get_object_or_404(Product, pk=product_id)
f = QuestionForm(request.POST)
new_question = f.save()
return HttpResponseRedirect(reverse('products.views.detail', args=(p.id,)))
И URL
urlpatterns = patterns('products.views',
(r'^products/$', 'index'),
(r'^products/(?P<product_id>\d+)/$', 'detail'),
(r'^products/(?P<product_id>\d+)/question/$', 'question')
)
Righ теперь он работает, если я поставить «1» в атрибуте по умолчанию для внешнего ключа продукта в вопросе (где знак вопроса есть), он сохраняет вопрос на идентификатор продукта 1. Но я не знаю, что делать, чтобы сохранить его в текущем продукте.
я имел product_id уже в URL, поэтому теперь я просто ставлю это следующим образом: 'new_question = f.save (commit = False)', а затем эту строку 'new_question.post = p', а затем' new_question.save() ', и это сработало как шарм! Спасибо. – ramono