Our challenge are as follow:
Let me explain:
But actually requires the following:
Thus captured an added attribute on the many to many relationship.
We connect to SQL SERVER 17
Models.py
class Gender(models.Model):
descr = models.CharField(max_length=128)
class Meta:
db_table = "lkp].[gender"
def __str__(self):
return self.descr
class Funder_Pool(models.Model):
funder = models.ForeignKey(Funder, models.DO_NOTHING, related_name='mfunder')
name = models.CharField(max_length=128)
descr = models.CharField(max_length=128)
fund_type = models.ForeignKey(Fund_Type, models.DO_NOTHING, related_name='mfund_type')
ohd_course = models.ManyToManyField(OHD_Course, related_name='ohd_coourse')
household_income_range =
models.ManyToManyField(Household_Income_Range, related_name='household_income_range')
institution = models.ManyToManyField(Institution, related_name='institution' )
gender = models.ManyToManyField(Gender, related_name='gender')
race = models.ManyToManyField(Race, related_name='race')
student_relationship =
models.ForeignKey(Student_Relationship, models.DO_NOTHING, related_name='mstudent_relationship')
report = models.ManyToManyField(Report, related_name='report' )
class Meta:
db_table = "fnr].[funder_pool"
forms.py
class fFunder_Pool(forms.ModelForm):
class Meta:
model = Funder_Pool
fields = ['name', 'descr', 'fund_type', 'ohd_course', 'household_income_range', 'institution', 'gender', 'race', 'student_relationship', 'report']
# fields = ['name', 'descr', 'gender']
name = forms.CharField()
descr = forms.CharField()
fund_type = forms.ModelChoiceField(queryset=Fund_Type.objects.all())
ohd_course = forms.ModelMultipleChoiceField(queryset=OHD_Course.objects.all(), widget=forms.CheckboxSelectMultiple, required=False)
household_income_range = forms.ModelMultipleChoiceField(queryset=Household_Income_Range.objects.all(), widget=forms.CheckboxSelectMultiple, required=False)
institution = forms.ModelMultipleChoiceField(queryset=Institution.objects.all(), widget=forms.CheckboxSelectMultiple, required=False)
gender = forms.ModelMultipleChoiceField(queryset=Gender.objects.all(), widget=forms.CheckboxSelectMultiple(), required=False)
views.py# ---- FUNDER POOL - LIST -------------------------------------------
def funder_pool_list(request, pfunder_id):
funder_pool_list = Funder_Pool.objects.filter(funder_id=pfunder_id)
return render_to_response('funder_pool_list.html',{'header':"Funder Pool List", 'funder_pool_list':funder_pool_list, 'pfunder_id': pfunder_id})
# ---- FUNDER POOL - EDIT -------------------------------------------
def funder_pool_edit(request, pfunder_id, pfunder_pool_id = None):
funder_pool_item = get_object_or_404(Funder_Pool, pk=pfunder_pool_id) if pfunder_pool_id else None
if request.method == 'POST':
form = fFunder_Pool(request.POST, instance=funder_pool_item)
if form.is_valid():
funder_pool_new = form.save(commit=False)
funder_pool_new.funder_id = pfunder_id
form.save()
return redirect('/funder_pool_list/' + str(pfunder_id))
else:
form = fFunder_Pool(instance = funder_pool_item)
# Either the form was not valid, or we've just created it
if pfunder_pool_id:
argument_list = {'form': form, 'pfunder_id': pfunder_id, 'id': funder_pool_item.id}
else:
argument_list = {'form': form, 'pfunder_id': pfunder_id}
return render(request, 'funder_pool_edit.html', argument_list)
Funder_pool_edit.py{% if id %}
<form action="/funder_pool_edit/{{pfunder_id}}/{{id}}" method="post">
{% else %}
<form action="/funder_pool_add/{{pfunder_id}}" method="post">
{% endif %}
<table border="0">
{{ form.as_table }}
</table>
<input type="submit" value="Save!" />
</form>lease