Tuesday, August 7, 2018

many to many with added attribute on template

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

--
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 django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

No comments:

Post a Comment