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.

Reply via email to