Tôi cần một số trợ giúp để vượt qua lỗi django bằng các biểu mẫu nội tuyến. Tôi không thể hình dung ra điều này. Tôi có lẽ có thể ép buộc eventID nếu tôi có thể tìm ra cách để làm điều đó trước khi nó cố gắng xác nhận.Phím nước ngoài nội tuyến Django không khớp với khóa chính của phụ huynh
Khi tôi nộp mẫu đơn của tôi, tôi nhận được một lỗi: Hidden field (event): The inline foreign key did not match the parent instance primary key
Có cách nào để làm cho công việc mã này?
Mã sau đây được yêu cầu để giáo viên đăng ký nhiều sinh viên cho một sự kiện.
------ models.py ------------
class Event(models.Model):
title = models.CharField(max_length=200)
description = models.CharField(max_length=200)
time = models.DateTimeField()
duration = models.DecimalField(max_digits=5, decimal_places=2)
location = models.CharField(max_length=200)
# Customer is a parent, teacher, or school
class Customer(models.Model):
event = models.ForeignKey(Event)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
address1 = models.CharField(max_length=60)
address2 = models.CharField(max_length=60, blank=True)
city = models.CharField(max_length=30)
state = models.CharField(max_length=2)
zipcode = models.CharField(max_length=5)
phone_number = models.CharField(max_length=30)
email = models.EmailField()
# A customer can enroll several students for a single event.
class Attendee(models.Model):
event = models.ForeignKey(Event)
sponsor = models.ForeignKey(Customer)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
------ forms.py --------- -
class AttendeeForm(forms.ModelForm):
event = forms.IntegerField(required=True, widget=forms.HiddenInput())
class Meta:
model = Attendee
fields = ('event', 'last_name', 'first_name', 'gender', 'schoolYr',)
#exclude = ('event',)
#widgets = {
# 'dtgPurchase' : DateTimeWidget(),
#}
def __init__(self, *args, **kwargs):
super(AttendeeForm, self).__init__(*args, **kwargs)
------- views.py ----------
def register3(request, event_id):
messages = []
try:
event = get_object_or_404(Event, id=event_id) #Event ID is passed in here.
AttendeeFormSet = inlineformset_factory(Event, Attendee, form=AttendeeForm, extra=1)
#AttendeeFormSet = formset_factory(AttendeeForm)
if request.method == 'POST':
print "POST"
formset = AttendeeFormSet(request.POST, request.FILES, prefix='attendees')
#formset.save(commit=False)
i=0
for form in formset.forms:
print "Form %s " % str(i)
# ?? Is is possible to set the event Here?
if formset.is_valid():
attendees = formset.save_all()
print "Yay!!!"
#return redirect('event_view', event_id=event.id)
else:
print "Invalid formset"
else: # is get method on first step
formset = AttendeeFormSet(instance=event, prefix='attendees')
print "Event: %s " % event
except Event.DoesNotExist:
raise Http404
c = Context({
'messages': messages,
'event' : event,
'attendees': formset,
})
return prepCxt(request, 'register3.html', c)