Our challenge are as follow:
1. Many to Many link with added attributes.
Let me explain:
1. We can capture the link:
2.
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
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/097bf2ba-2b67-44e5-9430-105f3760b34e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.