Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 显示模型输出时出现问题。ManyToManyField(用户)_Python_Django_User Input - Fatal编程技术网

Python 显示模型输出时出现问题。ManyToManyField(用户)

Python 显示模型输出时出现问题。ManyToManyField(用户),python,django,user-input,Python,Django,User Input,我通过构建一个名为TravelBuddies的应用程序来学习Django。它将允许旅行者计划他们的旅行,保存相关的旅行项目(如预订、机票、护照副本、保险信息等),并为日常活动创建警报。该应用程序还能够向旅行者更新当地信息,如天气或每日新闻。旅行者还可以与他人共享旅行信息,或与他人合作计划旅行 我面临一个问题。我通过Django admin为吉隆坡增加了两项活动。他们将“去植物园”和“去水族馆” 当我转到时,我会看到以下页面: 如您所见,在Co-planner字段中,用户名显示为,但应显示为Co

我通过构建一个名为TravelBuddies的应用程序来学习Django。它将允许旅行者计划他们的旅行,保存相关的旅行项目(如预订、机票、护照副本、保险信息等),并为日常活动创建警报。该应用程序还能够向旅行者更新当地信息,如天气或每日新闻。旅行者还可以与他人共享旅行信息,或与他人合作计划旅行

我面临一个问题。我通过Django admin为吉隆坡增加了两项活动。他们将“去植物园”和“去水族馆”

当我转到时,我会看到以下页面:

如您所见,在Co-planner字段中,用户名显示为
,但应显示为
Co-planner:williams

当我点击行程名称:吉隆坡并前往:

以下是我在
models.py中的代码:

from django.contrib.auth.models import User
from django.db import models

# Create your models here.
from django.template.defaultfilters import slugify

class Trip(models.Model):
    trip_name = models.CharField(max_length=100)
    date = models.DateField()
    planner_name = models.CharField(max_length=100)
    add_coplanner = models.ManyToManyField(User)
    slug = models.SlugField(max_length=150, default='null')

    def __str__(self):
        return self.trip_name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.trip_name)
        super().save(*args, **kwargs)

class Activity(models.Model):
    trip = models.ForeignKey(Trip, on_delete=models.CASCADE)
    activity_name = models.CharField(max_length=100)
    date = models.DateField(auto_now=True)
    time = models.TimeField(auto_now= True)
    location = models.CharField(max_length=100)
    item_type = models.CharField(max_length=100)
    item_number = models.CharField(max_length=100)
    add_cotraveller = models.ManyToManyField(User)
    slug = models.SlugField(max_length=150, default='null')

    def __str__(self):
        return self.activity_name

    def save(self):
        super(Activity, self).save()
        self.slug = '%i-%s' % (
            self.id, slugify(self.trip.trip_name)
        )
        super(Activity, self).save()
from django.views import generic
from .models import Trip, Activity


class TripListView(generic.ListView):
    template_name = 'trips/triplist.html'
    context_object_name = 'all_trips'

    def get_queryset(self):
        return Trip.objects.all()


class ActivityView(generic.DetailView):
    model = Trip
    template_name = 'trips/activity.html'
from . import views
from django.urls import path

app_name = 'trips'

urlpatterns = [
    path('triplist/', views.TripListView.as_view(), name='triplist'),
    path('triplist/<slug:slug>/', views.ActivityView.as_view(), name='activity'),
]
from django.apps import AppConfig


class TripsConfig(AppConfig):
    name = 'trips'
以下是我在
视图中的代码。py

from django.contrib.auth.models import User
from django.db import models

# Create your models here.
from django.template.defaultfilters import slugify

class Trip(models.Model):
    trip_name = models.CharField(max_length=100)
    date = models.DateField()
    planner_name = models.CharField(max_length=100)
    add_coplanner = models.ManyToManyField(User)
    slug = models.SlugField(max_length=150, default='null')

    def __str__(self):
        return self.trip_name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.trip_name)
        super().save(*args, **kwargs)

class Activity(models.Model):
    trip = models.ForeignKey(Trip, on_delete=models.CASCADE)
    activity_name = models.CharField(max_length=100)
    date = models.DateField(auto_now=True)
    time = models.TimeField(auto_now= True)
    location = models.CharField(max_length=100)
    item_type = models.CharField(max_length=100)
    item_number = models.CharField(max_length=100)
    add_cotraveller = models.ManyToManyField(User)
    slug = models.SlugField(max_length=150, default='null')

    def __str__(self):
        return self.activity_name

    def save(self):
        super(Activity, self).save()
        self.slug = '%i-%s' % (
            self.id, slugify(self.trip.trip_name)
        )
        super(Activity, self).save()
from django.views import generic
from .models import Trip, Activity


class TripListView(generic.ListView):
    template_name = 'trips/triplist.html'
    context_object_name = 'all_trips'

    def get_queryset(self):
        return Trip.objects.all()


class ActivityView(generic.DetailView):
    model = Trip
    template_name = 'trips/activity.html'
from . import views
from django.urls import path

app_name = 'trips'

urlpatterns = [
    path('triplist/', views.TripListView.as_view(), name='triplist'),
    path('triplist/<slug:slug>/', views.ActivityView.as_view(), name='activity'),
]
from django.apps import AppConfig


class TripsConfig(AppConfig):
    name = 'trips'
以下是我在
url.py中的代码:

from django.contrib.auth.models import User
from django.db import models

# Create your models here.
from django.template.defaultfilters import slugify

class Trip(models.Model):
    trip_name = models.CharField(max_length=100)
    date = models.DateField()
    planner_name = models.CharField(max_length=100)
    add_coplanner = models.ManyToManyField(User)
    slug = models.SlugField(max_length=150, default='null')

    def __str__(self):
        return self.trip_name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.trip_name)
        super().save(*args, **kwargs)

class Activity(models.Model):
    trip = models.ForeignKey(Trip, on_delete=models.CASCADE)
    activity_name = models.CharField(max_length=100)
    date = models.DateField(auto_now=True)
    time = models.TimeField(auto_now= True)
    location = models.CharField(max_length=100)
    item_type = models.CharField(max_length=100)
    item_number = models.CharField(max_length=100)
    add_cotraveller = models.ManyToManyField(User)
    slug = models.SlugField(max_length=150, default='null')

    def __str__(self):
        return self.activity_name

    def save(self):
        super(Activity, self).save()
        self.slug = '%i-%s' % (
            self.id, slugify(self.trip.trip_name)
        )
        super(Activity, self).save()
from django.views import generic
from .models import Trip, Activity


class TripListView(generic.ListView):
    template_name = 'trips/triplist.html'
    context_object_name = 'all_trips'

    def get_queryset(self):
        return Trip.objects.all()


class ActivityView(generic.DetailView):
    model = Trip
    template_name = 'trips/activity.html'
from . import views
from django.urls import path

app_name = 'trips'

urlpatterns = [
    path('triplist/', views.TripListView.as_view(), name='triplist'),
    path('triplist/<slug:slug>/', views.ActivityView.as_view(), name='activity'),
]
from django.apps import AppConfig


class TripsConfig(AppConfig):
    name = 'trips'
以下是我在
triplist.html
中的代码:

<!DOCTYPE html>
{% extends 'trips/base.html' %}
{% load static %}
<html lang="en">
<link rel="stylesheet" type="text/css" href="{% static "css/style.css" %}">

<head>
    <meta charset="UTF-8">
    {% block title%}Trip list{% endblock %}
    <title>Trip list</title>
</head>


<body>
    {% block content %}
    <!--Page content-->
    <h1>This is Trip List Page</h1>


    <ol>
        {% for trip in all_trips %}
        <ol>
            <li><a href="{% url 'trips:activity' trip.slug %}">Trip name: {{ trip.trip_name }}</a></li>
            Date: {{ trip.date }}<br>
            Planner: {{ trip.planner_name }}<br>
            Co-planner: {{ trip.add_coplanner.all }}<br>
        </ol>
        {% endfor %}


    </ol>

    <img src="{% static "images/botanical-garden.jpg" %}" alt="Botanical Garden" />
    <!-- New line -->
    {% endblock %}
</body>
</html>

</html>
{% extends 'trips/base.html' %}
{% block title%}
Detail
{% endblock %}


{% block content %}

<h3>Activities for {{trip.trip_name}} </h3>

{% for trip_item in trip.activity_set.all %}
<!--<p>Activity name: {{ trip_item.activity_name }}</p>-->
<ol>
    <li>Activity name: {{ trip_item.activity_name }}</li>
    Date: {{ trip_item.date }}<br>
    Time: {{ trip_item.time }}<br>
    Location: {{ trip_item.location }}<br>
    Item Type: {{ trip_item.item_type }}<br>
    Item No: {{ trip_item.item_number }}<br>
    Co-traveller: {{ trip_item.add_cotraveller.all }}
</ol>
{% endfor %}

{% endblock %}
triplist.html和activity.html有什么问题吗


更新1:顺便说一句,我从这个链接中了解到了这段代码的想法:
add_coplanner=models.ManyToManyField(User)


问这个问题的人也面临着和我一样的问题。他得到了类似于
]>
的东西。他被建议重写str()方法。但是我不知道怎么做。

嗨,在“活动”模型中添加这个

    def get_cotravellers(self):
          return " , ".join([x.username for x in self.add_cotraveller.all()])

在Template中,将其称为
{{trip\u item.get\u cotravelers}}

Hi在“活动”模型中添加此

    def get_cotravellers(self):
          return " , ".join([x.username for x in self.add_cotraveller.all()])

在Template中,将其称为
{{trip\u item.get\u cotravelers}}

您需要在此处迭代,因为它是查询集

triplist.html

  Coplanners: 
    {% for user in trip.add_coplanner.all %}
        {{user.name}} 
        #{{user.username}} do this if your User model don't have name field
     #If you want to separate the users with comma
       {% if not forloop.last %} , {% endif %}
    {% endfor %}<br>
coplanner:
{trip.add_coplanner.all%中的用户为%
{{user.name}
#{{user.username}}如果您的用户模型没有名称字段,请执行此操作
#如果要用逗号分隔用户
{%if不是forloop.last%},{%endif%}
{%endfor%}

您需要在此处迭代,因为它是查询集

triplist.html

  Coplanners: 
    {% for user in trip.add_coplanner.all %}
        {{user.name}} 
        #{{user.username}} do this if your User model don't have name field
     #If you want to separate the users with comma
       {% if not forloop.last %} , {% endif %}
    {% endfor %}<br>
coplanner:
{trip.add_coplanner.all%中的用户为%
{{user.name}
#{{user.username}}如果您的用户模型没有名称字段,请执行此操作
#如果要用逗号分隔用户
{%if不是forloop.last%},{%endif%}
{%endfor%}


我已经添加了您的代码。它给了我这个错误:
AttributeError at/triplist/kualalumpur/'User'对象没有属性'name'
sorry updated。把它改成用户名或者名字,或者别的什么。我面临一个新问题。请看一看这个问题:上面的代码解决了您的问题。但我的示例是针对
活动模型
我添加了您的代码。它给了我这个错误:
AttributeError at/triplist/kualalumpur/'User'对象没有属性'name'
sorry updated。把它改成用户名或者名字,或者别的什么。我面临一个新问题。请看一看这个问题:上面的代码解决了您的问题。但我的示例是针对
活动模型
我添加了您的代码。但是,没有显示用户的名称。它显示为
Coplanners:
,而不是
Coplanners:William
。您是指这行:
add\u coplanner=models.ManyToManyField(User)
我用过这个代码:
{{I.add\u coplanner.username}
同样的问题。没有显示用户的名称。顺便说一句,我是从以下链接了解到这段代码的:
add\u coplanner=models.ManyToManyField(user)
。问这个问题的人也面临着和我一样的问题。他得到了类似于
]>
的东西。有人建议他重写str()方法。但是我不知道怎么做。是的。它起作用了。以下是工作代码:
{%for trip in all_trips%}
  • 日期:{{trip.Date}
    计划员:{{trip.Planner_name}}
    计划员:{%for trip.add_coplanner.all%}{{user.username}{%endfor%}
  • 我已经添加了您的代码。但是,没有显示用户的名称。它显示为
    Coplanners:
    ,而不是
    Coplanners:William
    。您是指这行:
    add\u coplanner=models.ManyToManyField(User)
    我用过这个代码:
    {{I.add\u coplanner.username}
    同样的问题。没有显示用户的名称。顺便说一句,我是从以下链接了解到这段代码的:
    add\u coplanner=models.ManyToManyField(user)
    。问这个问题的人也面临着和我一样的问题。他得到了类似于
    ]>
    的东西。有人建议他重写str()方法。但是我不知道怎么做。是的。它起作用了。以下是工作代码:
    {%for trip in all_trips%}
  • 日期:{{trip.Date}
    计划员:{{trip.Planner_name}}
    计划员:{%for trip.add_coplanner.all%}{{user.username}{%endfor%}