исходные данные django formset с идентификатором (первичный ключ) - PullRequest
1 голос
/ 11 октября 2011

По какой-то причине исключение в моих формах не работает, и первичный ключ моих моделей элементов отображается в моем наборе форм. Как от этого избавиться?

Форма:

 41 class ItemForm(forms.ModelForm):
 53  
 54     class Meta:
 55         model = Item
 56         fields = ('name',
 58                   'description',
 59                   'quantity',
 60                   'start',
 61                   'end',
 62                   'cost_price',
 63                   'selling_price',)
 64         widgets = {'cost_price': forms.TextInput(attrs={'onChange':'updateSellingPrice()'}),
 65                    'description': forms.Textarea,
 66                    'start': SelectDateWidget,
 67                    'end': SelectDateWidget}
 68         exclude = ('id')
 69 
 70 ItemFormSet = modelformset_factory(Item, form=ItemForm, max_num=5, extra=3, exclude=('id'))

Вид:

 59 def item_details(request, event_slug, role_id, module_slug):
 60     event = get_object_or_404(Event, slug=event_slug)
 61     payment_details = EventPaymentDetail.objects.get_or_create(event=event)[0]
 62     try:
 63         item_details = Item.objects.filter(event=event)
 65     except:
 66         item_details = Item.objects.get_or_create(event=event)[0]
 68 
 69     if request.method == 'POST':
 70         item_formset = ItemFormSet(request.POST)
 71 
 72         #display_error(request, item_formset)
 73         if item_formset.is_valid():
 74             instances = item_formset.save(commit=False)
 75             for instance in instances:
 76                 instance.event = event
 77                 instance.save()
 93             messages.success(request, 'Item details successfully saved!')
 94             url = reverse('event_admin_dashboard', args=[event_slug, role_id])
 95             return redirect(url)
 96 
 97     else:
 98         item_formset = ItemFormSet()
 99     currency_type = payment_details.currency
100     template = 'registration/item_details.html'
101     return render(request, template, locals())

1 Ответ

1 голос
/ 11 октября 2011

Я не верю, что можно исключить поле id. Боюсь, я не могу дать вам объяснения или ссылку на документы.

За исключением:

Здесь не проблема, но вы пропустили запятую в вашем exclude кортеже. Это не проблема, но это означает, что django интерпретирует это как

exclude = ('i', 'd')

Должно быть:

exclude = ('id',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...