【发布时间】:2017-03-05 16:26:51
【问题描述】:
长期聆听者,第一次海报。希望在我的模型问题上得到一些帮助。
我的多对多关系有问题。当我提交表单时,我想让我的用户信息与他们创建的帖子相关联。我正在使用多对多,因为我将有一个额外的功能,其他用户可以参加同一次旅行。
目前,我的 Trip 表数据创建良好,但我的用户未链接到 Trip id,因此我无法在模板上呈现他们的姓名。
下面是我的代码。感谢任何帮助! 干杯
这是我的models.py:
class User(models.Model):
name = models.CharField(max_length=45)
username = models.CharField(max_length=255)
password = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = UserManager()
class Trip(models.Model):
destination = models.CharField(max_length=45)
description = models.CharField(max_length=255)
datefrom = models.CharField(max_length=255)
dateend = models.CharField(max_length=255)
user = models.ManyToManyField(User)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
这是我的views.py:
def travels(request):
user = User.objects.get(id=request.session['logged_user'])
all_trips = Trip.objects.all().order_by('-id')
user_trips = Trip.objects.filter(user=request.session['logged_user'])
context = {
"user_trips": user_trips,
"all_trips": all_trips,
"user": user,
}
return render(request, 'belt_exam/travels.html', context)
def addtrip(request):
user_id = request.session['logged_user']
createdtrip = Trip.objects.create(destination=request.POST['destination'], description=request.POST['description'], datefrom=request.POST['datefrom'], dateend=request.POST['dateend'])
createdtrip.user.add(User.objects.get(id=user_id))
return redirect('/travels')
这是我的模板:
{% for alltrip in all_trips.all %}
<tr>
<td>{{alltrip.name}}</td>
<td><a href="travels/destination/{{alltrip.id}}">{{alltrip.destination}}</a></td>
<td>{{alltrip.datefrom}}</td>
<td>{{alltrip.dateend}}</td>
<td>
<form class="" action="travels/destination/{{alltrip.id}}" method="POST">
{% csrf_token %}
<input type="submit" value="Join">
</form>
</td>
</tr>
{% endfor %}
【问题讨论】:
标签: python django django-models many-to-many