이 질문에 많은 시간을 보았지만 내 경우에는 작동하지 않는 이유를 알 수 없습니다. 이것은 커피의 새로운 인스턴스를 만들거나 데이터베이스에 존재 인수에 주어진 coffee_id 경우 새 하나를 업데이트하도록되어Django 양식은 기존 인스턴스를 업데이트하는 대신 새 인스턴스를 만듭니다.
def edit(request, coffee_id=None):
coffee = get_object_or_404(Drink, pk=coffee_id) if coffee_id else Drink()
if request.method == 'POST':
form = CoffeeForm(request.POST, instance=coffee)
if form.is_valid():
form.save()
return HttpResponseRedirect(urlresolvers.reverse('coffee:index'))
else:
form = CoffeeForm(instance=coffee)
return render(request, 'edit.html', {'coffee_form': form})
: 나는 다음보기 코드가 있습니다.
그러나 coffee_id가 데이터베이스에 존재하더라도 항상 새로운 커피 인스턴스가 생성됩니다.
양식을 저장하지 않고 커피 인스턴스를 저장하려고했지만 동일한 작업을 수행했습니다.
내가 잘못하고있는 것이 있습니까? 업데이트 할 수 있도록 모델에 특별한 것을 설정해야합니까?
이class Drink(models.Model):
time = models.DateTimeField('time', default=datetime.datetime.now)
location = models.ForeignKey(Location)
type = models.ForeignKey(DrinkType)
** 편집 **
이 URL을 추가 :
편집
이는 음료 형태
class CoffeeForm(forms.ModelForm):
class Meta:
model = Drink
fields = ('time', 'location', 'type')
def __init__(self, *args, **kwargs):
super(forms.ModelForm, self).__init__(*args, **kwargs)
coffee_category = Category.objects.get(name='coffee')
coffee_drink_types = DrinkType.objects.filter(category=coffee_category.id)
self.fields['type'].choices = ((x.id, str(x)) for x in coffee_drink_types)
그리고 음료 모델
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^edit/$', views.edit, name='edit'),
url(r'^edit/(?P<coffee_id>[0-9]*)/$', views.edit, name='edit')
]
CoffeeForm 및 음료 모델 자체를 표시 할 수 있습니까? –
나는 글을 편집했다. Thx – Bertrand
'coffee_id'가보기로 전달되고 있습니까? 당신은 당신의 URL을 보여줄 수 있습니까? – Alasdair