Das TypeError-Objekt kann nicht iteriert werden

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, eine Variable in meinen Django-Vorlagen zu durchlaufen. Die betreffende Variable ist das zugehörige Objekt des in meiner DetailView-Unterklasse angegebenen Modells:

TypeError at / de / applicants / 50771459778 /

Das Objekt 'Haushaltsmitglied' kann nicht wiederholt werden

Hier ist meinmodels.py Datei:

class Applicant(models.Model):
    user              = models.ForeignKey(User, editable=False)
    bank_card_number  = models.CharField(_('Bank card number'),max_length=50, unique=True)
    site_of_interview = models.IntegerField(_('Site of interview'), choices = SITE_CHOICES, default=TIRANA, blank=False)
    housenumber       = models.CharField(_('House Number'),max_length=8)
    address_line1     = models.CharField(_('Address line 1'),max_length=50)
    address_line2     = models.CharField(_('Apt #'),max_length=50,blank=True) 
    municipality      = models.CharField(_('Municipality/commune'),max_length=25)
    district          = models.CharField(_('District'),max_length=25,blank=True)
    urban             = models.IntegerField(_('Area (urban/rural)'), choices = AREA_CHOICES, blank=False)
    postal            = models.CharField(_('Postal code'),max_length=25,blank=True) 

class Householdmember(models.Model):
    applicant         = models.ForeignKey(Applicant)
    first_name        = models.CharField(_('First name'),max_length=50,blank=False)
    middle_name       = models.CharField(_('Middle name'),max_length=50,blank=True) 
    last_name         = models.CharField(_('Last name'),max_length=50,blank=False)
    national_id       = models.CharField(_('National ID'),max_length=50,blank=False, unique=True)
    male              = models.IntegerField(_('Gender'), choices = GENDER_CHOICES, blank=False)
    date_of_birth     = models.DateField()
    rel_to_head       = models.IntegerField(_('Gender'), choices = RELTOHEAD_CHOICES, blank=False)
    disability        = models.IntegerField(_('Is disabled?'), choices = YESNO_CHOICES, blank=False)
    created_at        = models.DateTimeField(auto_now_add = True)
    updated_at        = models.DateTimeField(auto_now = True)

Hier ist meinurls.py Datei:

class ListViewApplicants(ListView):
    paginate_by = 100
    def get_queryset(self):
        return Applicant.objects.all()

class DetailViewUnmask(DetailView):
    def get_object(self):
        return self.get_queryset().get(pk=mask_toggle(self.kwargs.get("pk_masked")))

urlpatterns = patterns('',
    url(r'^

Hier ist der relevante Teil meiner Vorlage,detail.html:

<h2>Household members</h2>
<table class="package_detail">
    <tr>
        {% include "applicants/householdmember_heading_snippet.html" %}
    </tr>

    {% for householdmember in applicant.householdmember_set.all %}
    <tr>

        {% for field in householdmember %}
            <td>{{ field }}</td>
        {% endfor %}
        <!--
        <td>{{ householdmember.first_name }}</td>
        <td>{{ householdmember.middle_name  }}</td>
        <td>{{ householdmember.last_name  }}</td>
        <td>{{ householdmember.national_id  }}</td>
        <td>{{ householdmember.get_male_display }}</td>
        <td>{{ householdmember.date_of_birth }}</td>
        <td>{{ householdmember.get_rel_to_head_display }}</td>
        <td>{{ householdmember.get_disability_display }}</td>
        -->
    </tr>
    {% endfor %}
</table>

Der auskommentierte Teil (d. H. Der Teil zwischen dem<!-- --> Tags) funktioniert, was mich zu der Annahme veranlasst, dass ich in der Lage sein sollte, über das zu iterierenhouseholdmember Variable. Aber wenn ich es versuche, funktioniert es nicht - ich bekomme nur den obigen TypeError.

Ich habe auf stackoverflow.com intensiv nach einer Antwort gesucht, aber die nächstgelegene Antwort ist die folgende:django wie durchläuft man das von einer generischen detailansicht zurückgegebene kontextobjekt?, aber es löst nicht mein Problem, denke ich, weil ich klassenbasierte Ansichten verwende.

Würde mich über jede Hilfe sehr freuen. Vielen Dank!

, login_required(ListViewApplicants.as_view( template_name='applicants/index.html', #context_object_name='form', )), name='index'), url(r'^(?P<pk_masked>\d+)/

Hier ist der relevante Teil meiner Vorlage,detail.html:

<h2>Household members</h2>
<table class="package_detail">
    <tr>
        {% include "applicants/householdmember_heading_snippet.html" %}
    </tr>

    {% for householdmember in applicant.householdmember_set.all %}
    <tr>

        {% for field in householdmember %}
            <td>{{ field }}</td>
        {% endfor %}
        <!--
        <td>{{ householdmember.first_name }}</td>
        <td>{{ householdmember.middle_name  }}</td>
        <td>{{ householdmember.last_name  }}</td>
        <td>{{ householdmember.national_id  }}</td>
        <td>{{ householdmember.get_male_display }}</td>
        <td>{{ householdmember.date_of_birth }}</td>
        <td>{{ householdmember.get_rel_to_head_display }}</td>
        <td>{{ householdmember.get_disability_display }}</td>
        -->
    </tr>
    {% endfor %}
</table>

Der auskommentierte Teil (d. H. Der Teil zwischen dem<!-- --> Tags) funktioniert, was mich zu der Annahme veranlasst, dass ich in der Lage sein sollte, über das zu iterierenhouseholdmember Variable. Aber wenn ich es versuche, funktioniert es nicht - ich bekomme nur den obigen TypeError.

Ich habe auf stackoverflow.com intensiv nach einer Antwort gesucht, aber die nächstgelegene Antwort ist die folgende:django wie durchläuft man das von einer generischen detailansicht zurückgegebene kontextobjekt?, aber es löst nicht mein Problem, denke ich, weil ich klassenbasierte Ansichten verwende.

Würde mich über jede Hilfe sehr freuen. Vielen Dank!

, login_required(DetailViewUnmask.as_view( model=Applicant, template_name='applicants/detail.html' )), name='detail'),

Hier ist der relevante Teil meiner Vorlage,detail.html:

<h2>Household members</h2>
<table class="package_detail">
    <tr>
        {% include "applicants/householdmember_heading_snippet.html" %}
    </tr>

    {% for householdmember in applicant.householdmember_set.all %}
    <tr>

        {% for field in householdmember %}
            <td>{{ field }}</td>
        {% endfor %}
        <!--
        <td>{{ householdmember.first_name }}</td>
        <td>{{ householdmember.middle_name  }}</td>
        <td>{{ householdmember.last_name  }}</td>
        <td>{{ householdmember.national_id  }}</td>
        <td>{{ householdmember.get_male_display }}</td>
        <td>{{ householdmember.date_of_birth }}</td>
        <td>{{ householdmember.get_rel_to_head_display }}</td>
        <td>{{ householdmember.get_disability_display }}</td>
        -->
    </tr>
    {% endfor %}
</table>

Der auskommentierte Teil (d. H. Der Teil zwischen dem<!-- --> Tags) funktioniert, was mich zu der Annahme veranlasst, dass ich in der Lage sein sollte, über das zu iterierenhouseholdmember Variable. Aber wenn ich es versuche, funktioniert es nicht - ich bekomme nur den obigen TypeError.

Ich habe auf stackoverflow.com intensiv nach einer Antwort gesucht, aber die nächstgelegene Antwort ist die folgende:django wie durchläuft man das von einer generischen detailansicht zurückgegebene kontextobjekt?, aber es löst nicht mein Problem, denke ich, weil ich klassenbasierte Ansichten verwende.

Würde mich über jede Hilfe sehr freuen. Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage