many to many with added attribute on template

9 views
Skip to first unread message

rvandenb...@gmail.com

unread,
Aug 7, 2018, 8:17:35 AM8/7/18
to Django users

Our challenge are as follow:

  1. Many to Many link with added attributes.

Let me explain:

    1. We can capture the link:

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
Reply all
Reply to author
Forward
0 new messages