模板上db的“MultipleObjectsReturned”

2024-09-25 10:19:42 发布

您现在位置:Python中文网/ 问答频道 /正文

更新:

使用“item15=Anhang.objects.filter(KN=item.KN)”我得到错误:异常类型:AttributeError 异常值:
“QuerySet”对象没有属性“\u meta”

views.py

@login_required()
def anhang_view(request, id=None):
    contextoo = {}
    item = Kunden.objects.get(id=id)
    kontaktform_form = KontaktForm(request.POST or None, instance=item)
    creatorform_form = CreateANform()
    contextoo['creatorform_form'] = creatorform_form
    if Kunden.objects.filter(KN=item.KN).exists():
        item14 = Kunden.objects.get(KN=item.KN)
        editkontakto_form = InfoKontaktoForm(request.POST or None, instance=item14)
        contextoo['editkontakto_form'] = editkontakto_form
    if Anhang.objects.filter(KN=item.KN).exists():
        item15 = Anhang.objects.filter(KN=item.KN)
        ANform_form = ANform(request.POST or None, instance=item15)
        contextoo['ANform_form'] = ANform_form
    if request.method == 'POST':
        creatorform_form = CreateANform(request.POST)
        if creatorform_form.is_valid():
            cre = creatorform_form.save(commit=True)
            cre.save()
        return redirect('/Verwaltung/KontaktAnlegen')
    else:
        return render(request, 'blog/anhang.html', contextoo)

错误:

'QuerySet' object has no attribute '_meta' Request Method: GET Request URL: http://127.0.0.1:8000/Verwaltung/Anhang/10 Django Version: 3.0.1 Exception Type: AttributeError Exception Value: 'QuerySet' object has no attribute '_meta'

anhang.html

    .
    .
    .
{% if ANform_form %}
    {% for obj in ANform_form.instance %}
          <table class="table" width="100%" border="0" cellspacing="0" cellpadding="0">
            <thead class="thead-light">
                <tr>
                    <td width="11%" border="0" cellspacing="0" cellpadding="0">
                        <b>
                            {% csrf_token %}
                            {{ obj.Thema }}
                        </b>
                    </td>
                    <td width="15%" border="0" cellspacing="0" cellpadding="0">Username</td>
                    <td width="19%" border="0" cellspacing="0" cellpadding="0">Password</td>
                    <td width="18%" border="0" cellspacing="0" cellpadding="0">E-Mail</td>
                    <td width="37%" border="0" cellspacing="0" cellpadding="0">Anhang</td>
                    <td>
                    </td>
                    <td></td>
                </tr>
            </thead>
            <tbody>
                <td></td>
                <td>
                    {% csrf_token %}
                    {{ obj.Username }}
                </td>
                <td>
                    {% csrf_token %}
                    {{ obj.Password }}
                </td>
                <td>
                    {% csrf_token %}
                    {{ obj.Email }}
                </td>
                <td>
                    {% csrf_token %}
                    {{ obj.Anhang }}
                </td>
                <td>
                    <a href=""><button type="button" class="btn btn-danger">Löschen</button></a> </td>
                </td>
            </tbody>
          </table>
    {% endfor %}
{% endif %}

models.py

class Anhang(models.Model):
    KN = models.IntegerField(unique=False)
    Thema = models.CharField(max_length=100, blank=True, unique=False)
    Username = models.CharField(max_length=100, blank=True, unique=False)
    Password = models.CharField(max_length=100, blank=True, unique=False)
    Email = models.CharField(max_length=100, blank=True, unique=False)
    Anhang = models.CharField(max_length=250, blank=True, unique=False)

forms.py

class ANform(forms.ModelForm):

    class Meta:
        model = Anhang
        fields = ['KN', 'Thema', 'Username', 'Password', 'Email', 'Anhang']
        required = ()
        labels = {
            'KN': 'KN',
            'Thema': 'Thema:',
            'Username': 'Username',
            'Password': 'Password',
            'Email': 'Email',
            'Anhang': 'Anhang',
        }


class CreateANform(forms.ModelForm):

    class Meta:
        model = Anhang
        fields = ['KN', 'Thema', 'Username', 'Password', 'Email', 'Anhang']
        required = ()
        labels = {
            'KN': 'KN',
            'Thema': 'Thema:',
            'Username': 'Username',
            'Password': 'Password',
            'Email': 'Email',
            'Anhang': 'Anhang',
        }

class KontaktForm(forms.ModelForm):

    def clean_kundennummer(self):
        KN = self.cleaned_data['KN']
        if Kunden.objects.filter(KN_iexact=KN).exists():
            raise forms.ValidationError('Diese Kundennummer ist bereits vergeben')
        return KN

    class Meta:
        model = Kunden
        fields = ['KN', 'Anrede', 'Name', 'Vorname', 'Infos']
        required = ()
        labels = {
            'KN': 'Kundennummer',
            'Anrede': 'Anrede',
            'Name': 'Name',
            'Vorname': 'Vorname',
            'Infos': 'Infos',
        }

class InfoKontaktoForm(forms.ModelForm):

    def clean_kundennummer(self):
        KN = self.cleaned_data['KN']
        if Kunden.objects.filter(KN_iexact=KN).exists():
            raise forms.ValidationError('Diese Kundennummer ist bereits vergeben')
        return KN

    class Meta:
        model = Kunden
        fields = ['KN', 'Anrede', 'Name', 'Vorname']
        required = ()
        labels = {
            'KN': 'Kundennummer:',
            'Anrede': 'Anrede:',
            'Name': 'Name:',
            'Vorname': 'Vorname',
        }

我该如何解决这个问题?已尝试使用“获取列表”或“404”&;Anhang.objects.all()


Tags: formifobjectsmodelsemailrequestusernamepassword
2条回答

不能将参数传递给.all,因为它意味着返回所有对象。你应该替换

item15 = Anhang.objects.all(Anhang.objects.filter(KN=item.KN))

item15 = Anhang.objects.filter(KN=item.KN)

或者,如果您只能执行一项操作

item15 = Anhang.objects.get(KN=item.KN)

实际上,django ORM的all()函数只将一个参数作为self

因此,不能将queryset传递给all()。您可以在这里检查第909行all()的工作情况

因此,您必须用以下内容替换item15

item15 = Anhang.objects.filter(KN=item.KN)

对于模板中的迭代循环,您必须编写以下代码

{% for obj in ANform_form.instance %}
    {{ obj.Thema }}
    {{ obj.Username }}
{% endfor %}

我编写了简单的for循环,您可以根据自己的要求在for循环中编写html

相关问题 更多 >